Python计数器的大小

时间:2013-07-28 00:45:22

标签: python counter

我想知道Python Counter中有多少项,包括重复项。我尝试了len,它告诉我唯一项目的数量:

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

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

2 个答案:

答案 0 :(得分:7)

Counter docs在“使用计数器对象的常用模式”部分中将sum(c.itervalues())答案作为此标准模式,因此我怀疑还有什么更好的。

与字典中的其他iter*方法一样,在Python 3中,itervaluesvalues替换。

答案 1 :(得分:4)

您可以查看the source code;没有缓存值记录计数器中的项目数。所以你能做的最好就是sum(c.itervalues())

In [108]: import collections

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

In [110]: sum(c.itervalues())
Out[110]: 10