Проверка словаря на нескольких значений и вывод их в отдельную переменую
Есть словарь
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]