Добавление словарей вместе, Python

У меня есть два словаря, и я хотел бы сделать их одним:

Что-то вроде этого псевдо-Python было бы хорошо:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}

ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}

Ответ 1

Если вы заинтересованы в создании нового dict без использования промежуточного хранилища: (это быстрее и, на мой взгляд, более чистое, чем использование dict.items())

dic2 = dict(dic0, **dic1)

Или если вы счастливы использовать один из существующих dicts:

dic0.update(dic1)

Ответ 2

>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(dic0.items() + dic1.items())
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>

Ответ 3

Вы ищете метод

dic0.update( dic1 )
print( dic0 ) 

дает

{'dic0': 0, 'dic1': 1}

Ответ 4

dic0.update(dic1)

Обратите внимание, что это фактически не возвращает объединенный словарь, он просто мутирует dic0.

Ответ 5

Пожалуйста, найдите сайт, прежде чем задавать вопросы в следующий раз: как объединить два словаря для создания нового в Python?

Самый простой способ сделать это - просто использовать свой примерный код, но используя элемент items() каждого словаря. Таким образом, код будет выглядеть следующим образом:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}
dic2 = dict(dic0.items() + dic1.items())

Я тестировал это в IDLE, и он отлично работает. Однако в предыдущем вопросе по этому вопросу говорится, что этот метод медленный и пережевывает память. Есть несколько других способов, рекомендованных там, поэтому, пожалуйста, посмотрите, важно ли использование памяти.

Ответ 6

Вот несколько способов добавления словарей.

Создает новый dict, добавляя оба элемента.

ndic = dict(dic0.items() + dic1.items())

Если вы хотите изменить dic0

dic0.update(dic1)

Если ваш НЕ ОК, чтобы изменить dic0

ndic = dic0.copy()
ndic.update(dic1)

Если все ключи в одном dict гарантируются как строки (dic1 в этом случае, конечно, аргументы могут быть заменены)

ndic = dict(dic0, **dic1)

В некоторых случаях может быть удобно использовать утилиты dict (Python 2.7 или новее), особенно если вы хотите отфильтровывать или преобразовывать несколько ключей/значений одновременно.

ndic = {k: v for d in (dic0, dic1) for k, v in d.items()}