Суммирование списка счетчиков в 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'
? Учитывая, что можно добавить счетчики вместе, почему их невозможно суммировать?
Ответы
Ответ 1
Функция sum
имеет необязательный начальный аргумент, который по умолчанию равен 0. Цитируя связанную страницу:
sum(iterable[, start])
Начало сумм и элементы итерации слева направо и возвращает общий
Задайте начало (пусто) Counter
объекта, чтобы избежать TypeError
:
In [5]: sum(counter_list, Counter())
Out[5]: Counter({'b': 5, 'c': 4, 'a': 1})