我有一个字典清单。
list_of_dicts = [{ a: 1, b:f, c:3}, {a: y, b:q, c:z, d: 1}, ... ]
现在,我想创建一个新的字典,它看起来像:
newDict = { a: [1,y], b: [f,q], c: [3,z], d:[1]}
我知道我可以做一个double for循环,但这很慢,因为我正在处理字典中的大对象(主要是NumPy数组)。
newDict = {}
for l in list_of_dicts:
for k, v in l.items():
if k in newDict:
newDict.append(v)
else:
newDict[k] = [v]
如何更快地做到这一点?
答案 0 :(得分:5)
使用createAt
将改善性能:
collections.defaultdict()
答案 1 :(得分:0)
这是最快的方法。您可以将if
替换为newdict.setdefault(k, []).append(v)
来简化它,但是您无能为力,它比两个循环要快。