我构建了一个生成约600万个词典的生成器,我想计算字典中某个值的出现频率。
例如,每个字典如下所示,我想计算键'state'
的值
dict1 = {'name':'Jane','state':'Alabama'}
dict2 = {'name':'Joe','state':'California'}
我想要结果
{'Alabama':1,'California:1}
我知道我可以将'state'值附加在列表中并使用from collections import Counter
,但是我不想将这些值保存在列表中,因为生成器会产生大约600万个字典。
在这种情况下,是否可以计算频率?否则,任何其他内存有效的方法都将有所帮助。
就目前而言,我认为一种方法是使用for循环返回一个以状态为键,值为计数的字典?
答案 0 :(得分:1)
这应该很简单。假设每个产生的值都包含state
键:
result = Counter(d["state"] for d in my_generator())