s41blizzard
@s41blizzard

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

Есть много словарей:
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
}
Есть функция
z = x.update(y)
но она затирает значение по ключу, а мне нужен в объединенном словаре список значений по ключу, т.е.:
z = {'a': 1, 'b': [2.3], 'c': 4]
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Можно так, если не требуется учитывать то, что в значении исходных словарей могут быть списки, которые нельзя объединять в один:
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)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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