Python Dictionary update () — это встроенная функция, которая принимает другой словарь или объект Iterable (набор пар ключ-значение) в качестве аргумента. Он объединяет содержимое переданного словаря или Iterable в текущий словарь. Метод update () не создал новый словарь; он изменяет содержимое существующего словаря.
Python Combine Two Dictionaries
Есть два основных способа использования объединить два словаря в Python.
- Объединить два или более словарей с помощью dict.update ()
- Объединить два или более словарей с помощью ** 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 с двойной звездой.
Основная причина в том, что двойная звездочка позволяет нам передавать любое количество аргументов ключевого слова.
- Аргумент ключевого слова — это то место, где вы указываете имя переменной, когда вы передаете его в функцию.
- Вы можете думать о 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 объединяет два примера словаря. больше.