лучший способ сложить много субсчетов - PullRequest
0 голосов
/ 08 февраля 2020

Что является наиболее эффективным эквивалентом functools.reduce(operator.iadd, ({info.foo : info.ct} for info in infos), Counter())?

info.foo является идентификатором int, а info.ct является ассоциированным субсчетом. Цель состоит в том, чтобы получить общее количество по идентификатору.

1 Ответ

1 голос
/ 08 февраля 2020

Прямое решение l oop:

ctr = Counter()
for info in infos:
    ctr[info.foo] += info.ct

Избегает O (n 2 ), которое вы получаете, многократно добавляя счетчики, а также конструкции всех ваших маленьких диктов и счетчики.

...