0

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

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

2 回答 2

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']}
于 2013-04-20T15:45:17.900 回答
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 版本,但有许多更新的方法可以做到这一点。

于 2013-04-20T15:46:51.057 回答