求和许多子计数的最佳方法

best way to sum many subcounts

functools.reduce(operator.iadd, ({info.foo : info.ct} for info in infos), Counter()) 最有效的等价物是什么?

info.foo 是一个 int 标识符,info.ct 是一个关联的子计数。目标是通过标识符获得总计数。

直接循环解决方案:

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

通过重复添加计数器以及所有小指令和计数器的构造来避免 O(n2)。