python - 总结许多子计数的最佳方法
问题描述
最有效的等价物是functools.reduce(operator.iadd, ({info.foo : info.ct} for info in infos), Counter())
什么?
aninfo.foo
是int
标识符,aninfo.ct
是关联的子计数。目标是按标识符获取总计数。
解决方案
直接循环解决方案:
ctr = Counter()
for info in infos:
ctr[info.foo] += info.ct
通过重复添加计数器以及所有小字典和计数器的构造来避免 O(n 2 )。