Как объединить два словаря?

В Python 3.5+ используйте оператор **:

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = {**dict1, **dict2}
print(merged_dict) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

В Python 3.9+ используйте оператор |:

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = dict1 | dict2
print(merged_dict) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

Для обновления словаря (изменения dict1 на месте), используйте метод update():

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict1.update(dict2)
print(dict1) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

Объединить два словаря в Python можно несколькими способами, каждый из которых имеет свои нюансы:

1. Использование оператора | (Python 3.9+)

Это самый современный и, пожалуй, наиболее читаемый способ, доступный начиная с Python 3.9. Он создает новый словарь, объединяя элементы из обоих словарей. Если ключи совпадают, то значение из второго словаря перезапишет значение из первого.

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

dict3 = dict1 | dict2

print(dict3)  # Output: {'a': 1, 'b': 3, 'c': 4}

2. Использование оператора |= (Python 3.9+)

Похож на |, но изменяет словарь, стоящий слева, вместо создания нового. Эквивалентен dict1 = dict1 | dict2.

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

dict1 |= dict2

print(dict1)  # Output: {'a': 1, 'b': 3, 'c': 4}

3. Использование метода .update()

Метод .update() изменяет словарь, к которому он применяется, добавляя или перезаписывая элементы из другого словаря.

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

dict1.update(dict2)

print(dict1)  # Output: {'a': 1, 'b': 3, 'c': 4}

4. Использование двойной распаковки (Python 3.5+)

Этот способ также создает новый словарь и доступен начиная с Python 3.5. Он использует оператор распаковки ** для разворачивания ключей и значений обоих словарей.

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

dict3 = {**dict1, **dict2}

print(dict3)  # Output: {'a': 1, 'b': 3, 'c': 4}

Какой способ выбрать?

  • Python 3.9+: Оператор | или |= - самые предпочтительные из-за своей краткости и читаемости.
  • Python 3.5+: Двойная распаковка ** - отличный вариант.
  • Все версии Python: Метод .update() - наиболее универсальный, но изменяет исходный словарь.

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

0