在Python 2中对计数器的所有值求和

时间:2015-09-10 20:55:57

标签: python python-2.7 counter

我有一个来自collections模块的计数器。总结所有计数的最佳方法是什么?

例如,我有:

 my_counter = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1})

并希望返回值7。据我所知,函数sum用于将多个计数器一起添加。

4 个答案:

答案 0 :(得分:10)

由于你的问题是关于Python 2.7的,你应该使用类似的东西

sum(my_counter.itervalues())

在Python 3.x上实际上等同于

sum(my_counter.values())

在这两种情况下,您都会懒惰地评估总和并避免使用昂贵的中间数据结构。谨防在Py 2.x上使用Python 3.x变体,因为在后一种情况下my_counter.values()计算整个计数列表并在计算总和之前将其存储在内存中。

答案 1 :(得分:4)

>>> from collections import Counter
>>> sum(Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}).values())
7
  

使用Counter对象的常用模式:sum(c.values())
  #所有计数总数

来源:https://docs.python.org/2/library/collections.html

答案 2 :(得分:0)

c = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1})
len( list(c.elements()) )

答案 3 :(得分:0)

来自here

from collections import Counter
c = Counter([1,2,3,4,5,1,2,1,6])
sum(c.values())