求和许多子计数的最佳方法
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)。
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)。