将多个dictionary的值加在一起python



对此有问题,不知道该说什么。这需要我说更多的帖子,但我不知道该说什么。不知道该怎么办。

dict1 = {'a':1,'b':2,'c':3}
dict2 = {'a':2,'b':3,'c':4}
dict3 = {'a':4,'b':3,'c':2}
dict4 = {'list1':{},'list2':{},'list3':{}}
dict4['list1'] = list1
dict4['list2'] = list2
dict4['list3'] = list3
for k,v in sorted(list4.items()):
    print (k + ":")
    for k2,v2 in sorted(v.items()):
        print ("t" + k2 + "," + str(v2) + "n")

它像这样输出

dict1:
    a,1
    b,2
    c,3
dict2:
    a,2
    b,3
    c,4
dict3:
    a,4
    b,3
    c,2

我希望它看起来像这个

dict5:
    a,7
    b,8
    c,9

在python3中,您可以使用字典理解:

list5 = {k:sum(d[k] for d in (list1,list2,list3)) for k in ('a','b','c')}

然后它将使用您已经编写的代码:

print('list5:')
for k,v in sorted(list5.items()):
    print ("t" + k + "," + str(v) + "n")

此外,你可能不应该给字典起"list5"这个名字。。。

collections包中的Counter对象部分用于将计数字典添加到一起。这里有一个使用它们的教程链接。

https://pymotw.com/2/collections/counter.html

例如(根据原帖定义的dict1..3)

from collections import Counter
c1 = Counter(dict1)
c2 = Counter(dict2)
c3 = Counter(dict3)
c4 = c1 + c2 + c3
# c4 can now be accessed as a dict, and
# has the desired values

相关内容

  • 没有找到相关文章

最新更新