Проверка словаря на нескольких значений и вывод их в отдельную переменую

Есть словарь

taxonomy = {'key1': 'value1', 'key2': 'value2', 
            'key3': 'value3', 'key4': 'value4',
            'key5': 'value5', 'key6': 'value6'}

и список cat = ['key1', 'key2', 'key3', 'key7', 'key8'] из которого я перебором category = list(map(taxonomy.get, cat)) нахожу совпадения. Сами значения списка поделены на группы (Например: 'key1','key3' это группа Service1, а 'key2','key7','key8' это группа Service2).Как сделать так что совпадения category еще разделить на группы?


Ответы (1 шт):

Автор решения: AivanF.

Не очень понятно, что конкретно вы хотите сделать, но для группировки значений можно использовать функцию groupby из стандартного модуля itertools:

from itertools import groupby

taxonomy = {
    'key1': 'value1', 'key2': 'value2',
    'key3': 'value3', 'key4': 'value4',
    'key5': 'value5', 'key6': 'value6',
}

groups = {
    'value1': 'Service1', 'value2': 'Service1', 'value3': 'Service1',
    'value4': 'Service2', 'value5': 'Service2', 'value6': 'Service2',
}

# кажется в вашем вопросе `cat` должен содержать ключи
# я поправил и переименовал
keys = ['key2', 'key3', 'key4', 'key7', 'key8']
values = list(map(taxonomy.get, keys))
print(f'Values: {values}')

for group, group_keys in groupby(values, key=groups.get):
    print(f'Group: {group}, keys: {list(group_keys)}')

Вывод:

Values: ['value2', 'value3', 'value4', None, None]
Group: Service1, keys: ['value2', 'value3']
Group: Service2, keys: ['value4']
Group: None, keys: [None, None]

→ Ссылка