2015-05-02 3 views
11

Я ищу, чтобы суммировать список счетчиков в python. Например просуммировать:Подсчет списка счетчиков в python

counter_list = [Counter({"a":1, "b":2}), Counter({"b":3, "c":4})] 

дать Counter({'b': 5, 'c': 4, 'a': 1})

я могу получить следующий код, чтобы сделать суммирование:

counter_master = Counter() 
for element in counter_list: 
    counter_master = counter_master + element 

Но я запутался, почему counter_master = sum(counter_list) приводит к ошибке TypeError: unsupported operand type(s) for +: 'int' and 'Counter' ? Учитывая, что можно добавить счетчики вместе, почему их невозможно суммировать?

ответ

24

sum функция имеет дополнительный начальный аргумент, который по умолчанию значение 0. Ссылаясь на связанную страницу:

sum(iterable[, start])

Суммы начать и пункты в Iterable от слева право и возвращает всего

Набор начать к (пустой) Counter объекта, чтобы избежать TypeError:

In [5]: sum(counter_list, Counter()) 
Out[5]: Counter({'b': 5, 'c': 4, 'a': 1}) 
Смежные вопросы