Как объединить словари в списке, которые имеют одинаковое значение, и объединить значения, которые не равны? - PullRequest
1 голос
/ 07 февраля 2020

есть список словарей:

[
    {
        "id" : 2.0,
        "code" : "12345"
    },
    {
       "id" : 2.0,
       "code" : "23456"
    },
    {
       "id" : 4.0,
       "code" : "6767"
    },
    {
       "id" : 5.0,
       "code" : "567"
    },
    {
       "id" : 4.0,
       "code" : "55657"
    }
]

Я хочу объединить dict с общим идентификатором, тогда я хочу получить этот список, как вы видите:

[
    {
        "id" : 2.0,
        "code" : "12345,23456"
    },
    {
        "id" : 4.0,
        "code" : "6767,55657"
    },
    {
        "id" : 5.0,
        "code" : "567"
    }
]

есть любой более быстрый способ может проверить все это для l oop?

1 Ответ

2 голосов
/ 07 февраля 2020

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

from collections import defaultdict

result = defaultdict(list)
for d in my_list:
    result[d['id']].append(d['code'])

final_list = [{'id': k, 'code': ', '.join(v)} for k, v in result.items()]

print(final_list)

вывод:

[{'id': 2.0, 'code': '12345, 23456'},
 {'id': 4.0, 'code': '6767, 55657'},
 {'id': 5.0, 'code': '567'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...