Словник (dict) – це одна з ключових вбудованих структур даних Python, котра зберігає дані у парах ключ-значення. Докладніше зі словниками можна ознайомитись за посиланням: Словники Python – приклади роботи. У цьому записі будуть розглянуті різноманітні способи об’єднання словників Python.

Метод update()

Метод update() оновлює словник елементами іншого словника:

user_profile = {
    'username': 'johndoe',
    'email': 'johndoe@example.com',
    'age': 30
}

updated_info = {
    'email': 'john.doe2025@example.com',
    'age': 31,
    'city': 'New York'
}

user_profile.update(updated_info)

print(user_profile)
# {'username': 'johndoe', 'email': 'john.doe2025@example.com', 'age': 31, 'city': 'New York'}'

Слід звернути увагу, якщо ключ вже присутній у словнику що оновлюється (як email та age з прикладу вище), його значення буде перезаписано значенням зі словника переданого як аргумент методу update().

Оператор **

Можна використати оператор **, щоб розпакувати, а потім об’єднати пари ключів та значень, з двох або більше словників:

default_settings = {
    'theme': 'light',
    'notifications': True,
    'language': 'en'
}

user_settings = {
    'theme': 'dark',
    'language': 'uk'
}

combined_settings = {**default_settings, **user_settings}

print(combined_settings)
# {'theme': 'dark', 'notifications': True, 'language': 'uk'}

Так само як і при використанні методу update(), якщо ключі у словниках збігаються, значення словника що йде пізніше, перезаписують попередні.

Функція chain()

Функція chain() з вбудованого модуля Python itertools, приймає кілька ітерованих об’єктів в якості аргументів, об’єднує та повертає як один ітерований об’єкт. Приклад:

from itertools import chain

dict_1 = {'a': 1, 'b': 2}
dict_2 = {'c': 3, 'd': 4}

combined_items = chain(dict_1.items(), dict_2.items())
merged_dict = dict(combined_items)

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

  • dict1.items() та dict2.items() повертають ітератори пар ключ-значення
  • chain() об’єднує ці ітератори в один
  • dict() перетворює об’єднані пари назад у словник

Клас ChainMap()

Клас ChainMap() з вбудованого модуля Python collections, працює так само як і метод chain(), щодо об’єднання словників. Основна відмінність полягає в тому, що ChainMap() не потребує попереднього виклику методу items(), для отримання пар ключ-значення словника. Приклад:

from collections import ChainMap

dict_1 = {'a': 1, 'b': 2}
dict_2 = {'c': 3, 'd': 4}

combined = ChainMap(dict_1, dict_2)
merged_dict = dict(combined)

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

Оператор злиття |

Оператор злиття | було додано у версії Python 3.9. Він являє собою спрощений синтаксис, який можна використовувати для об’єднання словників. Приклад:

default_config = {
    'theme': 'light',
    'language': 'en',
    'notifications': True
}

user_config = {
    'theme': 'dark',
    'notifications': False
}

final_config = default_config | user_config

print(final_config)
# {'theme': 'dark', 'language': 'en', 'notifications': False}

Так само як і в попередніх прикладах, якщо ключі у словниках збігаються, значення словника що йде пізніше перезаписують попередні.

Оператор оновлення |=

Оператор оновлення |=, також було представлено у Python 3.9. Він працює так само як вже згадуваний метод update(), тобто:

user_profile = {
    'username': 'johndoe',
    'email': 'johndoe@example.com',
    'age': 30
}

updated_info = {
    'email': 'john.doe2025@example.com',
    'age': 31,
    'city': 'New York'
}

user_profile |= updated_info

print(user_profile)
# {'username': 'johndoe', 'email': 'john.doe2025@example.com', 'age': 31, 'city': 'New York'}


Мітки: