Введение
В ходе статьи разберём различные способы объединить словари в языке программирования Python.
Объединение словарей в Python 3.9+
Начиная с версии Python 3.9 появилась возможность объединить два словаря при помощи оператора слияния (|).
x = {'a': 10, 'b': 8}
y = {'c': 6, 'd': 4}
z = x | y
print(z)
# Вывод: {'a': 10, 'b': 8, 'c': 6, 'd': 4}
Объединение словарей в Python 3.5-3.8
В версиях Python начиная с 3.5, по 3.9 предыдущий способ к сожалению не работал. Вместо оператора слияния используется распаковка обоих словарей при помощи двойных звёздочек (**):
x = {'a': 10, 'b': 8}
y = {'c': 6, 'd': 4}
z = {**x, **y}
print(z)
# Вывод: {'a': 10, 'b': 8, 'c': 6, 'd': 4}
Использование методов copy() и update()
В данном способе мы методом copy() копируем первый словарь в z, после чего обновляем получившийся словарь z методом update(), тем самым добавляя в него значения второго словаря:
x = {'a': 10, 'b': 8}
y = {'c': 6, 'd': 4}
z = x.copy()
z.update(y)
print(z)
# Вывод: {'a': 10, 'b': 8, 'c': 6, 'd': 4}
Также можно было обойтись без создания нового словаря, а добавить в первый данные из второго:
x = {'a': 10, 'b': 8}
y = {'c': 6, 'd': 4}
x.update(y)
print(x)
# Вывод: {'a': 10, 'b': 8, 'c': 6, 'd': 4}
Использование метода items()
В данном способе мы добавляем данные из первого и второго словаря в списки с кортежами. Далее мы их складываем оператором сложения (+) и преобразовываем в словарь:
x = {'a': 10, 'b': 8}
y = {'c': 6, 'd': 4}
z = dict(list(x.items()) + list(y.items()))
print(z)
# Вывод: {'a': 10, 'b': 8, 'c': 6, 'd': 4}
Получается, что словарь x превращается в список кортежей – [(‘a’, 10), (‘b’, 8)].
Словарь y тоже превращается в список кортежей – [(‘c’, 6), (‘d’, 4)].
И т.к. они находятся в скобках функции dict() получается такая картина:
z = dict([('a', 10), ('b', 8)] + [('c', 6), ('d', 4)])
Ну и как мы знаем, функция dict() преобразовывает их в словарь.
Заключение
В ходе статьи мы с Вами научились объединять словари в Python различными способами. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Мой Telegram канал
Мой YouTube канал