我有一个(长)字典列表,但为了这个例子,我将它们表示为
d = [{'a':1}, {'a':2}, {'a':3}]
我需要从这些字典中提取相同的元素,即
[i['a'] for i in d]
在 Python 中执行此操作最有效的方法是什么?列表推导式和 for 循环运行良好,但效率并不高。该过程可以以某种方式矢量化吗?
其他详细信息:字典有多个键,但我需要提取相同的键。所有词典都有相同的键。
使用
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]
另请参阅:
使用发电机怎么样:
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()