Python 2.7/3.1 introduced the awesome collections.Counter.
My question: How do I count how many "element appearances" a counter has?
I want this:
len(list(counter.elements()))
But shorter.
A more efficient solution is to sum up the counts (values) of each element:
sum(counter.values())
In Python 3.x, values() returns a view object of the dict's values.
In Python 2.x, values() returned an actual list. To avoid creating a new list with Python 2.x, use itervalues() instead:
sum(counter.itervalues())
Counter does not keep track of this information. At least summing the counts is much more efficient than len(list(counter.elements())).Counter.elements_count() method.Counter and add that method. Making it O(1) is cumbersome though -- you would basically need to rewrite the whole Counter class.
Counter.elements_count()method might be added. Python issue: bugs.python.org/issue11733