【问题标题】:Count frequency using generator in python在python中使用生成器计算频率
【发布时间】:2018-12-06 08:04:41
【问题描述】:

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

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

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

我想要结果

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

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

在这种情况下有没有办法计算频率?或者任何其他内存有效的方式都会有所帮助。

目前,我认为也许一种方法是返回一个字典,其中键是状态,值是使用 for 循环的计数?

【问题讨论】:

    标签: python-3.x generator counter


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,这太棒了!你觉得它的内存效率高吗?
    • 假设生成器是,是的。它不会将所有生成的项目存储在一个列表中,而是一个一个地处理它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2021-09-21
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多