确定collections.Counter
对象中所有计数总和的最佳方法是什么?
我试过了:
sum(Counter([1,2,3,4,5,1,2,1,6]))
但这会提供 21 而不是 9 ?
答案 0 :(得分:52)
您所使用的代码会添加密钥(即列表中的唯一值:1+2+3+4+5+6=21
)。
要添加计数,请使用:
In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9
documentation中的“共同模式”下提到了这个习语。
答案 1 :(得分:16)
求和值:
sum(some_counter.values())
演示:
>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
答案 2 :(得分:1)
从 Python 3.10
release schedule
开始,Counter
被赋予一个 total()
函数,它提供计数的总和:
from collections import Counter
Counter([1,2,3,4,5,1,2,1,6]).total()
# 9
答案 3 :(得分:0)
sum(Counter([1,2,3,4,5,1,2,1,6]).values())