В предыдущем уроке мы узнали о словарях Python и увидели, что они считаются неупорядоченными наборами с парой key/value , где ключи используются для доступа к элементам, а не к позиции, как, например, в списках . 
В этом кратком совете я собираюсь показать вам, как объединить (объединить) два словаря вместе.
Метод обновления ()
Допустим, у нас есть следующие два словаря:
| 1 2 | dict1 = {‘bookA’: 1, ‘bookB’: 2, ‘bookC’: 3} dict2 = {‘bookC’: 2, ‘bookD’: 4, ‘bookE’: 5} | 
  Как мы можем объединить эти два словаря в один словарь?  В этом отношении мы можем использовать функцию update([other]) .  Как указано в документации Python: 
Обновите словарь парами ключ / значение из других , перезаписав существующие ключи. Возврат
None.
update()принимает либо другой объект словаря, либо итерацию пар ключ / значение (в виде кортежей или других итераций длиной два). Если заданы аргументы ключевого слова, словарь обновляется этими парами ключ / значение:d.update(red=1, blue=2).
Итак, чтобы объединить два вышеупомянутых словаря, мы можем набрать следующее:
 dict2.update(dict1)  
Скажем, что вы набрали следующее утверждение, чтобы просмотреть результаты:
 print dict2.update(dict1) 
  В этом случае вы получите None !  Это потому, что функция update() не возвращает новый словарь.  Чтобы получить результат конкатенации, просто введите следующее: 
 print dict2 
В этом случае вы получите следующий вывод:
 {'bookA': 1, 'bookB': 2, 'bookC': 3, 'bookD': 4, 'bookE': 5}  
Что делать, если мы сделали следующее?
| 1 2 | dict1.update(dict2) print dict1 | 
В этом случае вы получите следующий вывод:
 {'bookA': 1, 'bookB': 2, 'bookC': 2, 'bookD': 4, 'bookE': 5}  
  Обратите внимание, что в первом случае, dict2.update(dict1) , мы обновляем словарь dict2 ключ / значение из dict1 и перезаписываем любые существующие ключи.  Существующий ключ, как мы можем заметить, это 'bookC' , который в этом случае будет иметь значение 3 , поскольку мы обновляем пары ключ / значение из dict1 .  Это будет полностью изменено в последнем случае, dict1.update(dict2) , где мы обновляем словарь dict1 ключ / значение из dict2 . 
  Однако существует проблема в использовании update() для объединения двух словарей.  Проблема заключается в том, что оригинальный словарь может быть изменен.  Другими словами, в первом случае, например, dict2.update(dict1) , оригинальная версия dict2 может быть изменена, а в последнем случае dict1.update(dict2) оригинальная версия dict1 может быть изменена.  То есть вы можете использовать update() для объединения двух словарей, если вы не заинтересованы в сохранении исходной версии словаря, который вам нужно обновить.  Под оригинальной версией здесь я подразумеваю сохранение значения ключа. 
Объединение двух словарей в одном выражении
Другой способ, который вы можете использовать для объединения двух словарей, где вы можете выполнить такую задачу в одном выражении, заключается в следующем:
 print dict(dict2, **dict1) 
Результат этого утверждения:
 {'bookA': 1, 'bookB': 2, 'bookC': 3, 'bookD': 4, 'bookE': 5} 
  Таким образом, dict1 переопределяет dict2 .  Если мы хотим, чтобы dict2 переопределил dict1 , мы dict1 : 
 print dict(dict1, **dict2) 
Выход в этом случае будет:
 {'bookA': 1, 'bookB': 2, 'bookC': 2, 'bookD': 4, 'bookE': 5}  
Сохранение ключевых значений
Возвращаясь к предыдущему вопросу о сохранении значений ключей, как мы можем объединить два словаря, сохраняя оригиналы каждого словаря?
Обходной путь для этого может быть следующим (взятый из ответа в этом потоке StackOverflow ):
| 01 02 03 04 05 06 07 08 09 10 | from itertools import chain from collections import defaultdict dict1 = {‘bookA’: 1, ‘bookB’: 2, ‘bookC’: 3} dict2 = {‘bookC’: 2, ‘bookD’: 4, ‘bookE’: 5} dict3 = defaultdict(list) for k, v in chain(dict1.items(), dict2.items()):     dict3[k].append(v) for k, v in dict3.items():     print(k, v) | 
Выход в этом случае будет:
| 1 2 3 4 5 | (‘bookA’, [1]) (‘bookB’, [2]) (‘bookC’, [3, 2]) (‘bookD’, [4]) (‘bookE’, [5]) | 
Итак, как вы можете видеть из этого краткого совета, очень легко объединить два словаря с помощью Python, и это становится немного сложнее, если мы хотим сохранить значения одного и того же ключа в каждом словаре.
Выучить питон
Изучите Python с нашим полным руководством по питону, независимо от того, начинаете ли вы или начинающий программист, ищущий новые навыки.