s41blizzard
@s41blizzard

Как сделать объединение словарей, объединив значения по ключу в список?

Есть много словарей:
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
}
Есть функция
z = x.update(y)
но она затирает значение по ключу, а мне нужен в объединенном словаре список значений по ключу, т.е.:
z = {'a': 1, 'b': [2.3], 'c': 4]
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
TheDeadOne
@TheDeadOne
Седой и строгий
Можно так, если не требуется учитывать то, что в значении исходных словарей могут быть списки, которые нельзя объединять в один:
def merge_dicts(*dicts):
    result = {}
    for d in dicts:
        for k,v in d.items():
            if k in result:
                if not isinstance(result[k], list):
                    result[k], t = list(), result[k]
                    result[k].append(t)
                result[k].append(v)
            else:
                result[k] = v
    return result


z = merge_dicts(x, y)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.
НЛ Континент Новосибирск
от 60 000 до 100 000 руб.
17 авг. 2018, в 17:10
15000 руб./за проект
17 авг. 2018, в 16:58
60000 руб./за проект
17 авг. 2018, в 16:55
10000 руб./за проект