如何sum()具有循环的多个collections.Counter()对象的内容?

时间:2016-05-20 03:07:55

标签: python dictionary sum counter

我一直在研究这个问题, 解决'组合' 多个 Counter()。object或dicts;但仍然无法完成它。 我在下面找到了两个参考文献:

例如我有很多' 计数器类型'订单[1 to 100]的变量名称:

Name:counter_1 Value:Counter({'a':1, 'b':2, 'c':3})
Name:counter_2 Value:Counter({'b':5, 'c':19, f:17})
Name:counter_3 Value:Counter({'a':11, 'b':22, 'c':33, 'd':97})
...
Name:counter_100 Value:Counter({'c':55, 'd':22, 'e':63, 'f':21})

如果我手动添加一个counter_1 + counter_2 + ... + counter_3,那会让我发疯。

总和()是否有更优雅或更简单的方法?

万分感谢!

1 个答案:

答案 0 :(得分:4)

只需使用内置函数sum(),并为其指定一个空的Counter的适当起始值。

>>> import collections
>>> c1 = collections.Counter({'a':1, 'b':2, 'c':3})
>>> c2 = collections.Counter({'b':5, 'c':19, 'f':17})
>>> sum((c1, c2), collections.Counter())
Counter({'c': 22, 'f': 17, 'b': 7, 'a': 1})