2013-07-28 39 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