Как я могу объединить два словаря в Python без потери данных?Python

Программы на Python
Ответить
Anonymous
 Как я могу объединить два словаря в Python без потери данных?

Сообщение Anonymous »

Я пытаюсь объединить два словаря в Python, но не могу гарантировать сохранение данных из обоих словарей. Если ключ существует в обоих словарях, я хочу объединить их значения в список.

Код: Выделить всё

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 3, 'c': 4, 'd': 5}

merged_dict = dict1.copy()
for key, value in dict2.items():
if key in merged_dict:
merged_dict[key] = [merged_dict[key], value]
else:
merged_dict[key] = value

print(merged_dict)
Я получаю следующий результат:

Код: Выделить всё

{'a': 1, 'b': [2, 3], 'c': [3, 4], 'd': 5}
Это работает, но если в качестве значений уже есть списки, этот подход не справится с этим. Например, объединить

Код: Выделить всё

dict1 = {'a': [1], 'b': 2}
dict2 = {'a': 3, 'b': [4], 'c': 5}
Желаемый результат:

Код: Выделить всё

{'a': [1, 3], 'b': [2, 4], 'c': 5}
Как я могу улучшить свою функцию, чтобы справиться с этой ситуацией в целом? Есть ли более питонический способ объединить словари, гарантируя, что все значения будут объединены в списки, если ключи перекрываются?

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-any-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»