python: список словаря для группировки по похожим ключевым элементам - PullRequest
1 голос
/ 18 июня 2020

У меня есть список dict:

xList =  [{491: 551}, {598: 60}, {47: 130}, {47: 451}, {47: 792}, {47: 599}, {47: 590}]

Я пытаюсь сгруппировать по похожим значениям ключей, чтобы получить:

res =  [{ 491 : [551], 598: [60], 47: [130, 451, 792, 599, 590}]

Я пробовал:

from collections import defaultdict

v = defaultdict(list)

for key, value in sorted(xList.items()):
    v[key].append(value)

но это ожидает плоский диктант, а не список диктовок

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Затем вы выполняете вложенную итерацию.

Итерация по списку, затем итерация по (ключу, значению) словаря.

rslt = {}
for i in xList:
    for k, v in i.items():
        rslt.setdefault(k, []).append(v)
0 голосов
/ 18 июня 2020

Использование defaultdict,

from collections import defaultdict

xList =  [{491: 551}, {598: 60}, {47: 130}, {47: 451}, 
          {47: 792}, {47: 599}, {47: 590}]

values = defaultdict(list)

for x in xList:
    k, v = tuple(*x.items())
    values[k].append(v)

defaultdict(<class 'list'>, {491: [551], 598: [60], 47: [130, 451, 792, 599, 590]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...