Summing dictionaries in a large dictionary
在Python中,在一个大型字典中,什么是跨字典求和最有效的方法?
我找到了类似的帖子,但不是我想要的。例如,在列表中有一篇dict的文章:python:eleganticly merge dictionaries with sum()of values。也有其他的东西,但不完全适合听写。
示例代码为:
1 2 3 4 | a={} a["hello"]={'n': 1,'m': 2,'o': 3} a["bye"]={'n': 2,'m': 1,'o': 0} a["goodbye"]={'n': 0,'m': 2,'o': 1} |
我需要的输出是:
1 | {'n': 3,'m': 5,'o': 4} |
号
求你了,救命!非常感谢!
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> a = {} >>> a["hello"]={'n': 1,'m': 2,'o': 3} >>> a["bye"]={'n': 2,'m': 1,'o': 0} >>> a["goodbye"]={'n': 0,'m': 2,'o': 1} >>> import collections >>> result = collections.Counter() >>> for d in a.values(): ... result += collections.Counter(d) ... >>> result Counter({'m': 5, 'o': 4, 'n': 3}) >>> dict(result) {'m': 5, 'o': 4, 'n': 3} |
将
1 2 3 | >>> a = ... >>> sum(map(collections.Counter, a.values()), collections.Counter()) Counter({'m': 5, 'o': 4, 'n': 3}) |
号
您可以使用
1 2 3 4 5 6 7 8 9 | >>> a = {'bye': {'m': 1, 'o': 0, 'n': 2}, 'hello': {'m': 2, 'o': 3, 'n': 1}, 'goodbye': {'m': 2, 'o': 1, 'n': 0}} >>> from collections import defaultdict >>> d = defaultdict(int) >>> for v in a.values(): ... for x, y in v.iteritems(): ... d[x] += y ... >>> print d defaultdict(<type 'int'>, {'m': 5, 'o': 4, 'n': 3}) |