一个人能在一个列表中计算多个字符串的匹配数吗?

2024-05-15 21:41:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我不想计算一个项目的出现次数,而是要计算多个项目的出现次数。变量match包含字符串列表。我想搜索目标列表目标列表中有多少match项。你知道吗

match = ["Manager", "Access Responsible"]

我的字典包含以下条目:

dict = {'WF:ACAA-CR (auto)': ['Manager', 'Access Responsible', 'Automatic'],
    'WF:ACAA-CR-AccResp (auto)': ['Manager', 'Access Responsible', 'Automatic'], 
    'WF:ACAA-CR-IT-AccResp[AUTO]': ['Group', 'Access Responsible', 'Automatic']}

我现在的代码是:

for key, values in dict.items():
    val = values
    match = "Manager"
    c = Counter(val)
    print(key, c[match])

输出为:

WF:ACAA-CR (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-IT-AccResp[AUTO] 0

这很好,我想要这样的东西,但是在match中最后有六个项目。你知道吗

我试过:

for key, values in dict.items():
    val = values
    match = ["Manager", "Access Responsible"]
    c = Counter(val)
    print(key, c[match])

错误消息是:

Traceback (most recent call last): File "C:/Users/.PyCharmCE2018.2/config/scratches/extract.py", line 29, in print(key, c[match]) TypeError: unhashable type: 'list'

如何计算列表中多个字符串的匹配项?


Tags: 项目key列表autoaccessmatchmanagerval
1条回答
网友
1楼 · 发布于 2024-05-15 21:41:21

您只需在match列表上循环并查找每个元素。另外,我不明白为什么需要一个额外的变量val。你知道吗

代码的问题是,您试图将一个完整的列表match作为参数传递给Counter的输出,后者是一个字典。所以您尝试使用match列表中的两个值作为键。所以你犯了错误。你知道吗

match = ["Manager", "Access Responsible"]

for key, values in dict_2.items():
    val = values
    c = Counter(val)
    for m in match:
        print(key, c[m])

WF:ACAA-CR (auto) 1
WF:ACAA-CR (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-AccResp (auto) 1
WF:ACAA-CR-IT-AccResp[AUTO] 0
WF:ACAA-CR-IT-AccResp[AUTO] 1

相关问题 更多 >