[英]What is the most pythonic way for keeping a running total of occurrences from a generator?
如果您有一个生成器或一组不是唯一的输入,并且我不能只是查询或存储在内存中,那么我怎样才能最好地保持运行记录?
如果内存不是问题,那么创建一个列表而不是使用 count 或使用 Counter 作为这个问题/答案
但是,如果没有足够的记忆力或对项目一无所知,我认为 dict 最有意义。 键是传入的值,值是计数。 有没有更好的方法?
一个例子可能是非等权重随机生成的数字。 就像一个无限面骰子,其中某些数字比其他数字多得多,但我们不知道这些数字是哪些。
collections.Counter
可以处理一个迭代器,它可以让迭代器只返回(并保存在内存中)所需的下一个项目。
例子
from collections import Counter
from itertools import islice
import random
def producer():
while True:
yield int(random.normalvariate(300, 100))
data = Counter(islice(producer(), 400))
print(data)
400
可以替换为更大的值,它只是将每个出现的值与出现次数一起存储一次所需的内存(如您描述的 dict )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.