2015-05-19 2 views
0

Если я использую функцию суммы Pythons, я получаю ошибку «неподдерживаемый тип операндов», хотя добавление c1 = Counter(..), c2 = Counter(..) выглядит следующим образом: c1+c2 работает.Как суммировать много объектов Counter в Python?

+1

Осторожно - это может занять квадратичное время. Эффективнее делать 'sum_counter = Counter()' и 'для счетчика в счетчиках: sum_counter.update (counter)'. – user2357112

+0

@ user2357112: Или, если вы используете однострочный, 'reduce (lambda a, b: a.update (b) или b, counters, Counter())' – Eric

ответ

3

Всегда читайте полную ошибку:

TypeError: unsupported operand type(s) for +: 'int' and 'Counter' 

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

sum([c1, c2, c3], Counter()) 

Или же, по буквам:

reduce(operator.add, [c1, c2, c3]) 
+0

Просто для информации полная ошибка на самом деле не является помогая новичкам. Вы должны разместить ссылку на https://docs.python.org/3/library/functions.html#sum –

+0

Спасибо! Это решило. – neox

Смежные вопросы