Python 3.9+:
dict1 | dict2
Python 3.5+:
{**dict1, **dict2}
До Python 3.5:
dict1.copy()
dict1.update(dict2)
Есть несколько способов объединить два словаря в Python, каждый со своими нюансами. Вот наиболее распространенные и рекомендуемые:
1. Используя оператор |
(начиная с Python 3.9):
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = dict1 | dict2
print(merged_dict) # Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# Если есть повторяющиеся ключи, то значения из второго словаря (dict2) перезапишут значения из первого (dict1)
dict3 = {'a': 5, 'e': 6}
merged_dict = dict1 | dict3
print(merged_dict) # Output: {'a': 5, 'b': 2, 'e': 6}
Этот способ наиболее лаконичный и читаемый, если вы используете Python 3.9 или новее.
2. Используя метод update()
:
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict1.update(dict2) # dict1 изменяется, объединяясь с dict2
print(dict1) # Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# Если есть повторяющиеся ключи, то значения из второго словаря (dict2) перезапишут значения из первого (dict1)
dict3 = {'a': 5, 'e': 6}
dict1.update(dict3)
print(dict1) # Output: {'a': 5, 'b': 2, 'c': 3, 'd': 4, 'e': 6}
# Важно! Метод update() изменяет словарь, к которому применяется (в данном случае, dict1). Если вам нужно создать новый словарь, не изменяя исходные, нужно сделать копию:
dict4 = {'f': 7, 'g': 8}
dict5 = {'h': 9, 'i': 10}
new_dict = dict4.copy() # Создаем копию dict4
new_dict.update(dict5) # Обновляем копию
print(new_dict) # Output: {'f': 7, 'g': 8, 'h': 9, 'i': 10}
print(dict4) # Output: {'f': 7, 'g': 8} (dict4 не изменился)
Метод update()
обновляет первый словарь, добавляя в него элементы из второго. Если ключи совпадают, значения из второго словаря перезаписывают значения из первого.
3. Используя распаковку словаря (**
):
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = {**dict1, **dict2}
print(merged_dict) # Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# Если есть повторяющиеся ключи, то значения из второго словаря (dict2) перезапишут значения из первого (dict1)
dict3 = {'a': 5, 'e': 6}
merged_dict = {**dict1, **dict3}
print(merged_dict) # Output: {'a': 5, 'b': 2, 'e': 6}
Этот способ создает новый словарь, объединяя элементы из обоих словарей. Он более читаемый, чем update()
, если вам нужно создать новый словарь, а не изменять существующий.
Какой способ выбрать?
|
. Это самый лаконичный и предпочтительный вариант.**
), если вам нужно создать новый словарь.update()
, если вам нужно изменить существующий словарь, и не забудьте создать копию, если хотите избежать изменения исходного словаря.Важно помнить: Все эти методы работают с Python 3. Для Python 2 нужно использовать другие подходы, например, метод dict.copy()
в сочетании с dict.update()
.