Как объединить два и более словаря в Python

Python Dictionary update() — это встроенная функция, которая принимает в качестве аргумента другой словарь или объект Iterable(набор пар ключ-значение). Он объединяет содержимое этого переданного словаря или Iterable в текущий словарь. Метод update() не создает новый словарь; он изменяет содержимое существующего словаря.

Есть два способа, которыми мы можем использовать для объединения двух и более словарей в Python.

  1. Объединение двух или более словарей, используя dict.update()
  2. Объединение двух или более словарей, используя **kwargs

Давайте посмотрим, как Python объединяет два примера словаря.

Объединение двух или более словарей, используя dict.update()

Python Dictionary update() — это встроенный метод, который обновляет один словарь элементами другого объекта словаря или итерируемым значением пары ключей. Если ключ отсутствует в словаре, он сначала добавляет ключ в словарь. После этого он объединяет значение; в противном случае, если ключ уже присутствует в словаре, он просто обновляет значение.

Короче говоря, он принимает другой словарь или объект Iterable (набор пар ключ-значение) в качестве аргумента. Затем объединяет содержимое этого переданного словаря или Iterable в текущий словарь.

См. следующий код.

Вывод:

Из вывода видно, что все элементы из dictB добавляются в dictA. В этом примере все ключи из обоих словарей уникальны.

Давайте возьмем пример, в котором некоторые ключи одинаковы для обоих словарей, и посмотрим на результат.

Выход:

Итак, из вывода видно, что ключи, общие для обоих словарей, будут содержать значения, как в dictB. Словарь, который мы передаем методу update() в качестве аргумента, переопределит значения стандартного ключа. Поэтому ‘asa’ имеет значение 46, а ‘eric’ теперь имеет значение 18.

Таким образом, значение второго словаря переопределит значение первого словаря, если ключи одинаковы в обоих словарях при выполнении update().

Метод update() не создает новый словарь(dictA), он обновляет содержимое первого словаря(dictA).

Давайте рассмотрим второй способ объединения двух словарей.

Используя **kwargs

Специальный синтаксис **kwargs в python используется для передачи списка аргументов переменной длины с ключевыми словами. Мы используем имя kwargs с двойной звездой.

Основная причина в том, что двойные звездочки позволяют нам передавать любое количество аргументов ключевого слова.

  1. Аргумент ключевого слова — это место, где вы предоставляете имя переменной при передаче ее в функцию.
  2. Вы можете думать о kwargs как о словаре, который сопоставляет каждое ключевое слово со значением, которое мы передаем вместе с ним. Вот почему, когда мы перебираем kwargs, кажется, что нет никакого порядка, в котором они были напечатаны.

Например, у нас есть словарь, подобный следующему.

Когда мы применяем **(двойная звезда) к dictA, он десериализует содержимое словаря в набор пар ключ-значение, как показано ниже.

Эквивалентно этому.

Теперь посмотрите на следующий код.

В приведенном выше коде мы создаем третий словарь и присваиваем этим словарям десериализованные значения двух словарей.

Итак, мы получаем объединенный dictC, который является третьим словарем, и он не изменяет содержимое двух существующих словарей.

Вывод:

**dictA и **dictB расширили содержимое обоих словарей до набора пар ключ-значение. Поэтому создается новый словарь dictC, содержащий данные из обоих словарей. Здесь также, если первый и второй словари имеют одинаковые ключи, то значение второго словаря переопределит значение первого.

Если вы измените порядок, как это.

Тогда содержимое dictA переопределит содержимое dictB. Так что здесь важен порядок.

Объединение трех словарей в Python

Давайте возьмем три словаря и объединим их все и создадим четвертый словарь.

Вывод:

Заключение

Объединение двух или более словарей в Python

Объединение двух или более словарей — простая задача в Python. Но найти лучший подход — сложный выбор для каждого разработчика. Если у вас нет никаких последствий изменения существующего словаря, вы можете использовать метод dict.update(), в противном случае используйте подход **kwargs.

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python