我想知道Python计数器中有多少项,包括重复项。我试图len
,它告诉我的唯一项目的数量:Python计数器的大小
>>> c = Counter(x=3,y=7)
>>> len(c)
2
我有最好的是sum(c.itervalues())
,我想并不可怕,但我希望计数器对象缓存值,以便我可以访问它O(1)。
我想知道Python计数器中有多少项,包括重复项。我试图len
,它告诉我的唯一项目的数量:Python计数器的大小
>>> c = Counter(x=3,y=7)
>>> len(c)
2
我有最好的是sum(c.itervalues())
,我想并不可怕,但我希望计数器对象缓存值,以便我可以访问它O(1)。
的Counter docs给你sum(c.itervalues())
答案这个在标准模式“通用模式与柜台工作对象”一节,所以我怀疑有更好的东西。
与其他iter*
字典上的方法一样,Python 3中的itervalues
被values
替代。
您可以通过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