Вопрос:

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

python python-3.x counter

29526 просмотра

3 ответа

1928 Репутация автора

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

Я пробовал:

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

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

Автор: Baz Источник Размещён: 03.09.2013 01:24

Ответы (3)


17 плюса

772571 Репутация автора

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

sum(some_counter.values())

Демо-версия:

>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
Автор: Martijn Pieters Размещён: 03.09.2013 01:25

60 плюса

381609 Репутация автора

Решение

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

Для суммирования используйте:

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

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

Автор: NPE Размещён: 03.09.2013 01:25

1 плюс

554 Репутация автора

sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Автор: martyn Размещён: 03.09.2013 01:27
Вопросы из категории :
32x32