python: мне нужно сгруппировать похожие элементы словаря в список - PullRequest
0 голосов
/ 28 марта 2020

У меня есть следующий словарь в python.

{731819:
[
{'lprods': ['5261', '5247', '5246'],'rprods':['123','456'],'cond':'a1'},
{'lprods': ['5261', '5547', '5246'],'rprods':['1223','496'],'cond':'a1'},
{'lprods': ['526', '557', '5246'],'rprods':['223','496'],'cond':'f1'},
{'lprods': ['61', '47', '246'],'rprods':['23','96'],'cond':'a0'}
]
}

Мне нужно получить вывод, основанный на 'cond'. элементы с одинаковым 'cond' должны быть сгруппированы в список. Выходные данные должны быть:

a1=[
[['5261', '5247', '5246'],['123','456']],
[['5261', '5547', '5246'],['1223','496']]
]
f1=[['526', '557', '5246'],['223','496']]
a0=[['61', '47', '246'],['23','96']]

содержимое массива - lprods и rprods.

Фактически элементы с одинаковым cond должны быть в одном списке.

1 Ответ

1 голос
/ 28 марта 2020

вы можете использовать в качестве слова dict:

result = {}
for e in d[731819]:
    result.setdefault(e['cond'], []).extend([e['lprods'],e['rprods'] ])

результат

result

вывод:

{'a1': [['5261', '5247', '5246'],
  ['123', '456'],
  ['5261', '5547', '5246'],
  ['1223', '496']],
 'f1': [['526', '557', '5246'], ['223', '496']],
 'a0': [['61', '47', '246'], ['23', '96']]}
...