Reputation: 13135
What is the best way of establishing the sum of all counts in a collections.Counter
object?
I've tried:
sum(Counter([1,2,3,4,5,1,2,1,6]))
but this gives 21 instead of 9?
Upvotes: 73
Views: 77707
Reputation: 61666
Starting in Python 3.10
, Counter
is given a total()
function which provides the sum of the counts:
from collections import Counter
Counter([1,2,3,4,5,1,2,1,6]).total()
# 9
Upvotes: 36
Reputation: 500367
The code you have adds up the keys (i.e. the unique values in the list: 1+2+3+4+5+6=21
).
To add up the counts, use:
In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9
This idiom is mentioned in the documentation, under "Common patterns".
Upvotes: 94
Reputation: 1122152
Sum the values:
sum(some_counter.values())
Demo:
>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
Upvotes: 29