Объединений словарей

Рассмотрим разные словари:

fish = {'name': "Nemo", 'hands': "fins", 'special': "gills"}
dog = {'name': "Clifford", 'hands': "paws", 'color': "red"}



Python 3.5+

fishdog = {**fish, **dog} # {'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}



В этом примере, дубликаты ключей соответствуют последнему значению (например, «Клиффорд» переопределяет «Немо»).



Python 3.3+

from collections import ChainMap
dict(ChainMap(fish, dog)) # {'hands': 'fins', 'color': 'red', 'special': 'gills', 'name': 'Nemo'}



Здесь первостепенное значение отдаётся кокретному ключу, а не последнему («Клиффорд» выбрасывается в пользу «Немо»).



Python 2.x, 3.x

>>> from itertools import chain
>>> dict(chain(fish.items(), dog.items()))
{'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}



Здесь используется последнее значение, как и в методе слияния [**] («Клиффорд» переопределяет «Немо»).

fish.update(dog)
fish # {'color': 'red', 'hands': 'paws', 'name': 'Clifford', 'special': 'gills'}