Добавление словарей вместе, Python [дубликат]


этот вопрос уже есть ответ здесь:

  • как объединить два словаря, чтобы создать новый в Python? [дубликат] 5 ответов

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

что-то вроде этого псевдо-питона было бы неплохо:

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

ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}
6   69   2011-05-15 02:04:11

6 ответов:

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

dic2 = dict(dic0, **dic1)

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

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

вы ищете способ обновления

dic0.update( dic1 )
print( dic0 ) 

дает

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

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

создает новый дикт, добавляя оба элемента.

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

если ваш ОК изменить dic0

dic0.update(dic1)

если не ok для изменения dic0

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

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

ndic = dict(dic0, **dic1)

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

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

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

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

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

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

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