gpt4 book ai didi

python - 使用 python 计算二维数组中特定主项目的多个项目的出现次数

转载 作者:行者123 更新时间:2023-11-28 22:12:35 24 4
gpt4 key购买 nike

我有一个二维列表,每行都包含 COMMON_NAME 条目和其他信息。我想找到属于每个 COMMON_NAME 的 MYFR 元素的总和。

For example, this is my list 
[['SOME TEXT', 'COMMON_NAME1', None, 'CHOC', 'MYFR01'],
['SOME TEXT2', 'COMMON_NAME1', None, 'ABC', 'MYFR02'],
['SOME TEXT3', 'COMMON_NAME1', None, 'XYZ', 'MYFR03'],
['SOME TEXT4', 'COMMON_NAME2', None, 'XYZ', 'STRAWBERRY'],
['SOME TEXT5', 'COMMON_NAME2', None, 'XYZ', 'MYFR01'],
['SOME TEXT6', 'COMMON_NAME2', None, 'XYZ', 'MYFR02'],
['SOME TEXT7', 'COMMON_NAME2', None, 'XYZ', 'APPLE']

对于每个 COMMOM_NAME,如果它们在 {'MYFR01'、'MYFR02'、'MYFR03' 中,我想找到出现次数的总和

在这个例子中我想得到 COMMON_NAME1 = 3 和 COMMON_NAME2 = 2

有没有简单的方法可以做到这一点?

谢谢

最佳答案

这是一个使用 collections.Counter 的解决方案:

>>> from collections import Counter
>>> data = [['SOME TEXT', 'COMMON_NAME1', None, 'CHOC', 'MYFR01'],
... ['SOME TEXT2', 'COMMON_NAME1', None, 'ABC', 'MYFR02'],
... ['SOME TEXT3', 'COMMON_NAME1', None, 'XYZ', 'MYFR03'],
... ['SOME TEXT4', 'COMMON_NAME2', None, 'XYZ', 'STRAWBERRY'],
... ['SOME TEXT5', 'COMMON_NAME2', None, 'XYZ', 'MYFR01'],
... ['SOME TEXT6', 'COMMON_NAME2', None, 'XYZ', 'MYFR02'],
... ['SOME TEXT7', 'COMMON_NAME2', None, 'XYZ', 'APPLE']]

>>> c = Counter(i[1] for i in data if i[-1].startswith('MYFR'))
>>> c
Counter({'COMMON_NAME1': 3, 'COMMON_NAME2': 2})

这假定您的目标选择将始终以 MYFR 开头。更仔细地阅读您的问题,您还可以使用:

>>> tgt = {'MYFR01', 'MYFR02', 'MYFR03'}
>>> c = Counter(i[1] for i in data if i[-1] in tgt)
>>> c
Counter({'COMMON_NAME1': 3, 'COMMON_NAME2': 2})

关于 Counter 的好处(dict 的子类)是它可以接受 generator expression .这意味着您不需要将“过滤”的项目具体化为一些中间数据结构,例如列表。

关于python - 使用 python 计算二维数组中特定主项目的多个项目的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54692624/

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