【发布时间】:2011-11-05 16:58:00
【问题描述】:
我的代码中有一个非常丑陋的循环,这真的减慢了我的程序。该循环主要执行字典比较,如果dict_A 中的特定键与dict_B 中的特定键相同,则对所有匹配项执行排序,并将其写入文件。
for k, v in A_dict.items():
for i, value in B_dict.items():
if k == value[0]:
sorted_B = [list(value) for key, value in groupby(sorted(B_dict.values()), key=itemgetter(1,2))]
outfile.write('{0}\t{1}\t{2}\t{3}\t{4}\t{5}\n'.format (i, k, v, value[1], value[2], value[3])
不幸的是,这两个字典都包含超过一百万个项目。除了将这些数据放入数据库然后排序之外,有没有人对如何加快这个循环有任何建议?感谢您的帮助。
【问题讨论】:
-
您的代码比较了一个键和一个值,但您的文本只描述了比较值。那么什么是“匹配”?价值观一样吗?此外,当您使用
items()方法时,会创建一个全新的列表。您可以使用 A_dict 中的键直接从 B_dict 获取。 -
@Keith 感谢您的关注。希望我的问题现在很清楚 - 我正在将一个字典 (dict_A) 中的键与另一字典 (dict_B) 中的值匹配
-
那么,当你有匹配的时候,你想写什么到文件中呢?
-
当我匹配
k == value[0]时,我正在写入文件中匹配的字典项中的一些其他值。 -
好吧..那么你为什么要进行
groupby/排序/列表理解呢?
标签: python performance sorting dictionary python-3.x