我想知道 Python Counter 中有多少项,包括重复项。我试过len
了,它告诉我独特物品的数量:
>>> c = Counter(x=3,y=7)
>>> len(c)
2
我拥有的最好的是sum(c.itervalues())
我认为这并不可怕,但我希望 Counter 对象缓存该值,以便我可以在 O(1) 中访问它。
Counter 文档在“使用 Counter 对象的常用模式”部分中将您的sum(c.itervalues())
答案作为标准模式给出,所以我怀疑还有什么更好的。
与iter*
字典上的其他方法一样,在 Python 3itervalues
中被替换为values
.
您可以查看源代码;Counter 中没有记录项目数的缓存值。所以你能做的最好的就是sum(c.itervalues())
。
In [108]: import collections
In [109]: c = collections.Counter(x=3, y=7)
In [110]: sum(c.itervalues())
Out[110]: 10