【发布时间】:2019-10-01 00:47:41
【问题描述】:
我有一个list 的字典。从每个字典中,我想提取我预先保存在列表中的一些键的信息。
我可以用for-loop 来做到这一点,但我的list 长度是 15,504,603。它需要很长时间来处理。我正在寻找替代方法。
我的字典列表(实际上是query_set.QuerySet):
data = [
{'name': 'Alex', 'employee_id': 1110, 'age': 38, 'rank': 'CEO', 'salary': 'unknown'},
{'name': 'Monty', 'employee_id': 1111, 'age': 33, 'rank': 'EO', 'salary': 2400},
{'name': 'John', 'employee_id': 1114, 'age': 32, 'rank': 'EO', 'salary': 2200},
{'name': 'Max', 'employee_id': 1120, 'age': 26, 'rank': 'OA', 'salary': 1200},
{'name': 'Ginee', 'employee_id': 1130, 'age': 28, 'rank': 'OA', 'salary': 1200},
{'name': 'Adam', 'employee_id': None, 'age': 18, 'rank': 'summer_intern', 'salary': None}
]
我要提取的信息是'name'、'age'和'rank'
所以我事先列出了一个键列表:
info = ['name', 'age', 'rank']
我可以通过执行 for 循环来完成任务
result = []
result.append(info)
for i in range(len(data)):
output = [data[i][x] for x in info]
result.append(output)
最后
for item in result:
print("\t".join(map(str,(item))))
结果如下:
name age rank
Alex 38 CEO
Monty 33 EO
John 32 EO
Max 26 OA
Ginee 28 OA
Adam 18 summer_intern
实际上,我的列表中有 15504603 个字典,其中 43 个 key : value 需要很长时间才能处理。即运行约 2 小时后的 22661/15504603。
理想的和省时的方法是什么?
【问题讨论】:
-
打印速度变慢了。
-
@BrendanAbel 不,伙计,我在这个进度条的
for i in tqdm(range(len(data))):中使用tqdm进度条我可以说它在这一步被延迟了。
标签: python python-3.x dictionary iterator