Сумма всех счетов в коллекциях.

Каков наилучший способ установить сумму всех подсчетов в объекте collections.Counter?

Я пробовал:

sum(Counter([1,2,3,4,5,1,2,1,6]))

но это дает 21 вместо 9?

Ответы

Ответ 1

В коде, который вы добавили ключи (т.е. уникальные значения в списке: 1+2+3+4+5+6=21).

Чтобы добавить подсчет, используйте:

In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9

Эта идиома упоминается в документации в разделе "Общие шаблоны".

Ответ 2

Суммируйте значения:

sum(some_counter.values())

Демо:

>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9

Ответ 3

sum(Counter([1,2,3,4,5,1,2,1,6]).values())

Ответ 4

Вы также можете использовать:

len(Counter([1,2,3,4,5,1,2,1,6]).elements())