Словник (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'}