В некоторых случаях вам может понадобиться объединить два или более словарей, чтобы создать более крупный словарь. В Python есть несколько способов объединения словарей: можно использовать метод update(), оператор ** (звёздочка), метод Chain() из модуля itertools и другие.
- Метод 1: с использованием метода update()
- Метод 2: с использованием обозначения двойной звездочки
- Метод 3: с использованием конструктора словаря
- Метод 4: с использованием ChainMap()
- Метод 5: с использованием оператора объединения(|)
- Метод 6: с использованием метода Chain()
- Метод 7: с использованием понимания словаря
- Метод 8: с использованием функции reduce()
Метод 1: с использованием метода update()
Метод update() объединяет ключи и значения из одного словаря с другим.
# Define two dictionaries containing different key-value pairs dictionary1 = {'Pen': 5, 'Pencil': 4, 'Chocolate': 15} dictionary2 = {'Apple': 25, 'Ball': 10, 'Doll': 20} # Use the update() method to add the key-value pairs from dictionary2 to dictionary1 dictionary1.update(dictionary2) # Print the updated dictionary1, which now contains all the key-value pairs from both dictionaries print(dictionary1)
Приведённый выше код определяет два словаря с различными парами ключ-значение. Затем код использует метод update() для объединения пар ключ-значение из словаря 2 с парами ключ-значение из словаря 1.
Наконец, код выводит обновлённый словарь 1, который содержит все пары ключ-значение из обоих словарей.
Метод 2: с использованием обозначения двойной звездочки
Двойную звёздочку (**dict) можно использовать для того, чтобы распаковать словарь и объединить его с другим словарём.
# Define two dictionaries containing different key-value pairs dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} # Use dictionary unpacking to merge the two dictionaries into a single dictionary merged_dict = {**dict1, **dict2} # Print the merged dictionary print(merged_dict)
Представленный выше код определяет два словаря — dict1 и dict2, которые содержат различные пары «ключ-значение». Затем код использует операцию распаковки словаря, чтобы объединить два словаря в один — merged_dict. И наконец, он выводит на экран объединённый словарь.
Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Метод 3: с использованием конструктора словаря
Конструктор словаря позволяет создавать новые словари, объединяя два или более уже существующих.
# Define two dictionaries containing different key-value pairs dict1 = {'USA': 1, 'United Kingdom': 2} dict2 = {'Canada': 3, 'Brazil': 4} # Use the dict() constructor and dictionary unpacking to merge the two dictionaries into a single dictionary merged_dict = dict(dict1, **dict2) # Print the merged dictionary print(merged_dict)
Приведенный выше код определяет два словаря dict1 и dict2 с разными парами ключ-значение.
- Затем он использует встроенный конструктор dict() вместе с распаковкой словаря, чтобы объединить эти два словаря в один словарь, называемый merged_dict.
- Наконец, он печатает объединенный словарь.
Output: {'USA': 1, 'United Kingdom': 2, 'Canada': 3, 'Brazil': 4}
Метод 4: с использованием ChainMap()
Класс ChainMap из модуля коллекций позволяет объединить несколько словарей в один, создавая своеобразное «сопоставление» между ними.
# Import the ChainMap class from the collections module from collections import ChainMap # Define two dictionaries containing different key-value pairs dict1 = {'USA': 1, 'United Kingdom': 2} dict2 = {'Canada': 3, 'Brazil': 4} # Use the ChainMap class to merge the two dictionaries into a single dictionary merged_dict = ChainMap(dict1, dict2) # Convert the merged dictionary into a regular dictionary and print it print(dict(merged_dict))
Сначала код импортирует класс ChainMap из модуля коллекций. После этого определяются два словаря dict1 и dict2, содержащие различные пары ключ-значение.
- Затем класс ChainMap используется для объединения этих двух словарей в один словарь merged_dict.
- Наконец, конструктор dict() используется для преобразования объединенного словаря в обычный словарь, и полученный словарь печатается.
Output: {'Canada': 3, 'Brazil': 4, 'USA': 1, 'United Kingdom': 2}
Метод 5: с использованием оператора объединения(|)
Начиная с версии Python 3.9, для объединения словарей можно использовать оператор объединения (|).
# Define two dictionaries containing different key-value pairs dict1 = {'USA': 1, 'United Kingdom': 2} dict2 = {'Canada': 3, 'Brazil': 4} # Use the union operator to merge the two dictionaries into a single dictionary merged_dict = dict1 | dict2 # Print the resulting merged dictionary print(merged_dict)
Приведённый выше код создаёт два словаря, в которых хранятся разные пары «ключ — значение». Затем оператор объединения | используется для объединения этих двух словарей в один словарь merged_dict. И наконец, этот объединённый словарь выводится на экран.
Метод 6: с использованием метода Chain()
Метод Chain() из модуля itertools позволяет объединить несколько итераций в одну. Если применить его к словарям, то ключи и значения из каждого словаря будут объединены в один итератор. Этот итератор можно использовать для создания нового словаря.
# Import the itertools module import itertools # Define two dictionaries containing different key-value pairs dict1 = {'USA': 1, 'United Kingdom': 2} dict2 = {'Canada': 3, 'Brazil': 4} # Create an empty dictionary called merged_dict merged_dict = {} # Use itertools.chain() to chain the items from both dictionaries, and then loop through them for key, value in itertools.chain(dict1.items(), dict2.items()): merged_dict[key] = value # Print the resulting merged dictionary print(merged_dict)
Код импортирует модуль itertools. Создаются два словаря: dict1 и dict2. Образуется пустой словарь merged_dict.
- Используя функцию itertools.chain(), код объединяет пары ключ-значение из обоих словарей в одну итерацию, которая затем обрабатывается с помощью цикла for.
- Цикл присваивает пары ключ-значение переменным «ключ-значение» и добавляет их в merged_dict.
Output: {'USA': 1, 'United Kingdom': 2, 'Canada': 3, 'Brazil': 4}
Метод 7: с использованием понимания словаря
Создание словаря из итерируемого объекта может быть сложной задачей, но есть более простой и удобный способ — понимание словаря. Этот метод позволяет объединить несколько словарей в один.
# Define two dictionaries with key-value pairs dict1 = {'USA': 1, 'United Kingdom': 2} dict2 = {'Canada': 3, 'Brazil': 4} # Merge the key-value pairs from both dictionaries into a single dictionary using a dictionary comprehension merged_dict = {k: v for d in(dict1, dict2) for k, v in d.items()} # Print the resulting merged dictionary print(merged_dict)
Выше представлен код, который определяет два словаря — dict1 и dict2, а затем создаёт новый словарь merged_dict.
Затем он объединяет пары «ключ-значение» из обоих словарей в merged_dict, используя понимание словаря. Наконец, он выводит полученный результат — merged_dict.
Output: {'USA': 1, 'United Kingdom': 2, 'Canada': 3, 'Brazil': 4}
Метод 8: с использованием функции reduce()
Модуль functools предлагает функцию reduce(), которую можно использовать для объединения списка словарей.
# Import the reduce function from the functools module from functools import reduce # Define a list of dictionaries with key-value pairs dicts = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}] # Use reduce to merge the key-value pairs from all dictionaries into a single dictionary # The lambda function merges two dictionaries using the unpacking syntax and returns the result merged_dict = reduce(lambda d1, d2: {**d1, **d2}, dicts) # Print the resulting merged dictionary print(merged_dict)
Приведённый выше код импортирует функцию reduce из модуля functools и создаёт список из трёх словарей.
Затем он объединяет два словаря в один, используя функцию уменьшения. Лямбда-функция получает на вход два словаря и объединяет их с помощью оператора распаковки ** (double asterisk). Наконец, объединённый словарь выводится на экран.
Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}