合并python中字典列表中的字典

时间:2013-04-20 15:42:05

标签: python list merge dictionary

我创建了一个词典列表,其中每个词典都有一个列表形式的值,如下所示:

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']}

2 个答案:

答案 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,但有很多新的方法可以做到。