58

建立collections.Counter对象中所有计数总和的最佳方法是什么?

我试过了:

sum(Counter([1,2,3,4,5,1,2,1,6]))

但这给出了21而不是9

4

4 回答 4

77

您拥有的代码将键(即列表中的唯一值:)相加1+2+3+4+5+6=21

要将计数相加,请使用:

In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9

文档中的“通用模式”下提到了这个习语。

于 2013-09-03T13:25:59.070 回答
25

对值求和:

sum(some_counter.values())

演示:

>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
于 2013-09-03T13:25:51.417 回答
8

从 开始Python 3.10Counter给出一个total()提供计数总和的函数:

from collections import Counter

Counter([1,2,3,4,5,1,2,1,6]).total()
# 9
于 2021-05-13T16:41:57.027 回答
3
sum(Counter([1,2,3,4,5,1,2,1,6]).values())
于 2013-09-03T13:27:21.690 回答