我创建了一个词典列表,其中每个词典都有一个列表形式的值,如下所示:
dictlist=[{a:['e','f','g'],b:['h','i','k'],c:['u','v',w]},{a:['t','u']}]
上面的例子在列表中包含两个词典:
one is {a:['e','f','g'],b:['h','i','k'],c:['u','v',w]}
and another dictionary is {a:['t','u']}
我想要的是组合这个列表的元素,以便在列表中生成一个具有相同键和值的完整字典,如下所示:
finaldictionary = {a:['e','f','g','t','u'],b:['h','i',k],c:['u','v','w']}
答案 0 :(得分:4)
您可以在此处使用collections.defaultdict
:
>>> from collections import defaultdict
>>> dic=defaultdict(list)
>>> dictlist=[{'a':['e','f','g'],'b':['h','i','k'],'c':['u','v','w']},{'a':['t','u']}]
>>> for x in dictlist:
for k,v in x.items():
dic[k].extend(v)
>>> dic
defaultdict(<type 'list'>, {'a': ['e', 'f', 'g', 't', 'u'], 'c': ['u', 'v', 'w'], 'b': ['h', 'i', 'k']})
或使用dict.setdefault
:
>>> dic={}
>>> for x in dictlist:
for k,v in x.items():
dic.setdefault(k,[]).extend(v)
>>> dic
{'a': ['e', 'f', 'g', 't', 'u'], 'b': ['h', 'i', 'k'], 'c': ['u', 'v', 'w']}
答案 1 :(得分:1)
'老派'解决方案就是这样......
finaldict = {}
dictlist = [{'a': ['e','f','g'], 'b': ['h','i','k'], 'c': ['u','v','w']},
{'a': ['t','u']}]
for d in dictlist:
for k in d.keys():
try:
finaldict[k] += d[k]
except KeyError:
finaldict[k] = d[k]
...从v1.0开始,它可能适用于所有版本的Python,但有很多新的方法可以做到。