2013-07-28 34 views
2

我想知道Python计数器中有多少项,包括重复项。我试图len,它告诉我的唯一项目的数量:Python计数器的大小

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

我有最好的是sum(c.itervalues()),我想并不可怕,但我希望计数器对象缓存值,以便我可以访问它O(1)。

回答

6

Counter docs给你sum(c.itervalues())答案这个在标准模式“通用模式与柜台工作对象”一节,所以我怀疑有更好的东西。

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

3

您可以通过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