在python中使用生成器计数频率

时间:2018-12-06 08:04:42

标签: python-3.x generator counter

我构建了一个生成约600万个词典的生成器,我想计算字典中某个值的出现频率。

例如,每个字典如下所示,我想计算键'state'的值

dict1 = {'name':'Jane','state':'Alabama'}
dict2 = {'name':'Joe','state':'California'}

我想要结果

{'Alabama':1,'California:1}

我知道我可以将'state'值附加在列表中并使用from collections import Counter,但是我不想将这些值保存在列表中,因为生成器会产生大约600万个字典。

在这种情况下,是否可以计算频率?否则,任何其他内存有效的方法都将有所帮助。

就目前而言,我认为一种方法是使用for循环返回一个以状态为键,值为计数的字典?

1 个答案:

答案 0 :(得分:1)

这应该很简单。假设每个产生的值都包含state键:

result = Counter(d["state"] for d in my_generator())