高效地从一长串字典中提取元素

问题描述 投票:0回答:2

我有一个(长)字典列表,但为了这个例子,我将它们表示为

d = [{'a':1}, {'a':2}, {'a':3}]

我需要从这些字典中提取相同的元素,即

[i['a'] for i in d]

在 Python 中执行此操作最有效的方法是什么?列表推导式和 for 循环运行良好,但效率并不高。该过程可以以某种方式矢量化吗?


其他详细信息:字典有多个键,但我需要提取相同的键。所有词典都有相同的键。

python performance dictionary vectorization
2个回答
2
投票

使用

pandas
。您必须支付导入和创建数据框架的前期费用。但后续操作都是向量化的,高效:

import pandas as pd

d = [{'a':1, 'b':11}, {'a':2, 'b':12}, {'a':3, 'b':13}]
df = pd.DataFrame(d)
print(df['a'])
print(list(df['a']))

打印:

0    1
1    2
2    3
Name: a, dtype: int64
[1, 2, 3]

另请参阅:

Pandas DataFrame 与字典的性能比较


0
投票

使用发电机怎么样:

from typing import Any, Generator


def iter_one_key(ds: list[dict[str, Any]], key: str) -> Generator:
    for i in range(len(ds)):
        yield ds[i][key]


def main():
    d = [{"a": 1}, {"a": 2}, {"a": 3}]
    for v in iter_one_key(d, "a"):
        print(v)


if __name__ == "__main__":
    main()
© www.soinside.com 2019 - 2024. All rights reserved.