建立collections.Counter
对象中所有计数总和的最佳方法是什么?
我试过了:
sum(Counter([1,2,3,4,5,1,2,1,6]))
但这给出了21而不是9?
建立collections.Counter
对象中所有计数总和的最佳方法是什么?
我试过了:
sum(Counter([1,2,3,4,5,1,2,1,6]))
但这给出了21而不是9?
您拥有的代码将键(即列表中的唯一值:)相加1+2+3+4+5+6=21
。
要将计数相加,请使用:
In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9
文档中的“通用模式”下提到了这个习语。
对值求和:
sum(some_counter.values())
演示:
>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
从 开始Python 3.10
,Counter
给出一个total()
提供计数总和的函数:
from collections import Counter
Counter([1,2,3,4,5,1,2,1,6]).total()
# 9
sum(Counter([1,2,3,4,5,1,2,1,6]).values())