gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:21 24 4
gpt4 key购买 nike

我有以下元组列表:

[[("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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com