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

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

Python Combine Two Dictionaries

Есть два основных способа использования объединить два словаря в Python.

  1. Объединить два или более словарей с помощью dict.update ()
  2. Объединить два или более словарей с помощью ** kwargs

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

Объединение двух или более словарей с помощью dict .update ()

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

После этого он объединяет значение; в противном случае, если ключ уже присутствует в словаре, он просто обновляет значение.

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

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

 # app.pydictA = {'asa': 11, 'emma': 19, 'eric': 21} dictB = {'millie': 46, 'finn': 23, 'noah': 18  } dictA.update (dictB) print ('Обновленный словарь A:') print (dictA) 

Вывод

 Обновленный словарь  1: {'asa': 11, 'emma': 19, 'eric': 21, 'millie': 46, 'finn': 23, 'noah': 18} 

Из вы увидите, что все элементы из dictB добавлены в dictA .

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

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

 # app.pydictA = {'asa': 11, 'emma': 19, 'eric': 21} dictB = {'asa': 46, '  finn ': 23,' eric ': 18} dictA.update (dictB) print (' Обновленный словарь A: ') print (dictA) 

Вывод

 Обновлен словарь A: {'asa': 46, 'emma': 19, 'eric': 18, 'finn': 23} 

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

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

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

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

Объединение двух или более словарей с помощью ** kwargs

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

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

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

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

 dictA = {'asa': 11, 'emma': 19, 'eric': 21} 

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

 ** dictA 

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

 'asa': 11, 'emma': 19, 'eric':  21 

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

 # app.pydictA = {'asa': 11, 'emma': 19, 'eric': 21}  dictB = {'millie': 46, 'finn': 23, 'noah': 18} dictC = {** dictA, ** dictB} print ('Объединенный словарь C:') print (dictC) 

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

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

Вывод

 Объединенный словарь C: {'asa': 11, 'emma'  : 19, 'eric': 21, 'millie': 46, 'finn': 23, 'noah': 18} 

** dictA и ** dictB расширил содержимое обоих словарей до набора пар ключ-значение.

Следовательно, новый словарь dictC , который содержит данные из обоих словарей.

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

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

 dictC = {** dictB, ** dictA} 

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

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

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

 # app.pydictA = {'asa': 11, 'emma': 19, 'eric': 21} dictB = {'millie': 46, '  finn ': 23,' noah ': 18} dictC = {' пенни ': 29,' sheldon ': 36,' leonard ': 2} dictD = {** dictA, ** dictB, ** dictC} print ('  Комбинированный словарь D: ') print (dictD) 

Вывод

 Комбинированный словарь D: {' asa ': 11,'  emma ': 19,' eric ': 21,' millie ': 46,' finn ': 23,' noah ': 18,' penny ': 29,' sheldon ': 36,' leonard ': 2} 

Заключение

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

Наконец, Python объединяет два примера словаря. больше.

Оцените статью
nanomode.ru
Добавить комментарий