首页 > 解决方案 > 对生成器执行频率分布计数,并返回大于 n 的值

问题描述

有没有办法对指向列表列表的生成器对象执行计数?如果是这样,我可以让计数操作输出前一个生成器对象的生成器对象(计数项目)吗?然后我想获得频率计数。我正在使用生成器来节省内存并防止崩溃。我的真实数据集/列表是巨大的!

我有一个生成器对象“gen_list”,它是从列表列表中创建的,我将向您展示如果生成器对象被打印出来的列表是什么样子:

In [1]: ll = [(('color'), ('blue')), (('food'), ('grapes')), (('color'), ('blue'))]

# create generator object 'test2'
In [2]: genobj = (each for each in ll)

# create a generator object with counted items
In [3]: count = (test2.count((i), i) for i in test2)

# list count
In [4]: list(count)

这会产生错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-72-83b1c94e3edd> in <module>()
----> 1 list(count)

<ipython-input-70-829ea68a1314> in <genexpr>(.0)
----> 1 count = (test2.count((i), i) for i in test2)

AttributeError: 'generator' object has no attribute 'count'

所以我被困在这里。如果我能解决这个问题,我可以继续获取频率计数(以生成器对象的形式),它看起来像:[(2, ('color', 'blue')), (1, ('food ', 'grapes')), (2, ('color', 'blue'))] 那么我只想保存值大于 2 的项目,以进行可视化分析。

标签: python-3.xlistcountgeneratorfrequency

解决方案


推荐阅读