Можно ли считать совпадения нескольких строк в одном списке? - PullRequest
0 голосов
/ 20 декабря 2018

Я не хочу посчитать вхождение одного предмета, но несколько предметов.Переменная 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 (последний вызов был последним): файл "C: /Users/.PyCharmCE2018.2 / config / scratches / extract.py ", строка 29, в печатном виде (ключ, c [match]) TypeError: unhashable тип: 'list'

Как подсчитать совпаденияболее одной строки в списке?

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете просто перебрать свой список 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
...