python - 满足列表列表中条件的元组中值的频率分布

标签 python list

我有以下元组列表:

[[("AA","AA"),("QQ","")],[("CC",""),("QQ","")],...]

当元组的第二项是 "" 时,我想获取每个值作为元组的第一项出现的频率。

上面的例子是这样的:

{"QQ":2, "CC":1}

最佳答案

我会使用 collections.Counter + itertools.chain 来完成:

>>> data = [[("AA","AA"),("QQ","")],[("CC",""),("QQ","")]]
>>> from itertools import chain
>>> from collections import Counter
>>> Counter(left for left, right in chain.from_iterable(data) if not right)
Counter({'QQ': 2, 'CC': 1})

这是有效的,因为 Counter 计算它被喂食的东西:

>>> Counter(["QQ", "QQ", "AA", "CC"])
Counter({'QQ': 2, 'AA': 1, 'CC': 1})

itertools.chain.from_iterable 可用于扁平化数据:

>>> list(chain.from_iterable(data))
[('AA', 'AA'), ('QQ', ''), ('CC', ''), ('QQ', '')]

我们使用 genexp 只选择第二个为空的项(对于字符串可以简单地写成 if not somestring):

>>> list(left for left, right in chain.from_iterable(data) if not right)
['QQ', 'CC', 'QQ']

关于python - 满足列表列表中条件的元组中值的频率分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103993/

相关文章:

python - 在python中递归展平嵌套列表

python - 在 CI 管道中部署 Dataflow

python - UFCNN 值错误 : when checking model input

list - 从列表中删除重复项,同时保留最右边的出现

python - 从列表中删除项目会导致列表变为 NoneType

java - 方法接受 List<String>,需要返回 List<String> 的相同实现

python - Python 是否在内部跟踪某些东西何时被排序?

python - Pandas 'Freq' 标签中的有效值是什么?

python - 使用 BeautifulSoup 进行多处理来改进 Wikipedia 抓取

python - 以圆圈形式打印文本