我想知道Python Counter中有多少项,包括重复项。我尝试了len
,它告诉我唯一项目的数量:
>>> c = Counter(x=3,y=7)
>>> len(c)
2
我最好的是sum(c.itervalues())
,我认为这并不可怕,但我希望Counter对象缓存值,以便我可以在O(1)中访问它。
答案 0 :(得分:7)
Counter docs在“使用计数器对象的常用模式”部分中将sum(c.itervalues())
答案作为此标准模式,因此我怀疑还有什么更好的。
与字典中的其他iter*
方法一样,在Python 3中,itervalues
被values
替换。
答案 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