我有 2 个字典列表。列表 A 长 34,000,列表 B 长 650,000。我本质上是根据键匹配将所有列表 B 字典插入到列表 A 字典中。目前,我正在做显而易见的事情,但这需要很长时间(说真的,就像一天一样)。一定有更快的方法!
for a in listA:
a['things'] = []
for b in listB:
if a['ID'] == b['ID']:
a['things'].append(b)
from collections import defaultdict
dictB = defaultdict(list)
for b in listB:
dictB[b['ID']].append(b)
for a in listA:
a['things'] = []
for b in dictB[a['ID']]:
a['things'].append(b)
这会将你的算法从 O(n*m) 变为 O(m)+O(n),其中 n=len(listA), m=len(listB)
基本上,它通过“预先计算”列表中的哪些字典与每个“ID”匹配来避免为 listA 中的每个字典循环遍历列表中的每个字典
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)