В некоторых случаях вам может понадобиться объединить два или более словарей, чтобы создать более крупный словарь. В Python есть несколько способов объединения словарей: можно использовать метод update(), оператор ** (звёздочка), метод Chain() из модуля itertools и другие.

Содержание

Метод 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}
Добавить комментарий