Суммирование списка счетчиков в 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})