7

我想知道 Python Counter 中有多少项,包括重复项。我试过len了,它告诉我独特物品的数量:

>>> c = Counter(x=3,y=7)
>>> len(c)
2

我拥有的最好的是sum(c.itervalues())我认为这并不可怕,但我希望 Counter 对象缓存该值,以便我可以在 O(1) 中访问它。

4

2 回答 2

11

Counter 文档在“使用 Counter 对象的常用模式”部分中将您的sum(c.itervalues())答案作为标准模式给出,所以我怀疑还有什么更好的。

iter*字典上的其他方法一样,在 Python 3itervalues中被替换为values.

于 2013-07-28T00:57:23.943 回答
7

您可以查看源代码;Counter 中没有记录项目数的缓存值。所以你能做的最好的就是sum(c.itervalues())

In [108]: import collections

In [109]: c = collections.Counter(x=3, y=7)

In [110]: sum(c.itervalues())
Out[110]: 10
于 2013-07-28T00:53:22.080 回答