Alenorze
@Alenorze
Не люблю Индию

Как сгруппировать словарь со словарями в python?

Мне нужно сгруппировать словарь ниже по значению группы, вывод хотел бы иметь такое значение.

Текущая структура:
{'sfp_dnscommonsrv': {'object': 
<modules.sfp_dnscommonsrv.sfp_dnscommonsrv object at 0x7f448bd6ac50>, 
'name': 'DNS Common SRV', 'cats': ['Footprint', 'Investigate', 
'Passive'], 'group': 'DNS', 'labels': ['']}, sfp__stor_db': {'object': 
<modules.sfp__stor_db.sfp__stor_db object at 0x7f448bd6acc0>, 'name': 
'Storage', 'cats': [''], 'group': 'DNS', 'labels': ['']}}


Нужна структура:
{'DNS': [{значение в котором group была DNS}, {значение в котором group была DNS}], 'DNS2': [{значение в котором group была DNS2}]},


То есть мы берем значение group, здесь это DNS, и по нему группируем все данные.
Мои попытки: {tuple(g): k for k, g in groupby(my_dict, key=modules.key)}
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
Alenorze
@Alenorze Автор вопроса
Не люблю Индию
from itertools import groupby

init_data = {'wood': {'color': 'red', group: 'old'}, 'stone': {'color': 'gray', group: 'old'}, 'glass': {'color': 'white', group: 'new'}}

grouped_data = {
    k: list(
        {
            _k: _v for d in (
                {'material': av[0]},
                av[1]
            ) for _k,_v in d.items()
        } for av in v
        ) for k, v in groupby(
            init_data.items(),
            lambda x: x[1]['group']
        )
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы