Как уже упоминали другие, a.update(b)
для некоторых диктов a
и b
будет достигнут результат, который вы просили в своем вопросе. Тем не менее, я хочу отметить, что я много раз видел extend
способ отображения / набор объектов , которые желают в синтаксисе a.extend(b)
, a
«s значения не должны быть перезаписаны b
» значениями s. a.update(b)
перезаписывает a
значения, и поэтому не является хорошим выбором для extend
.
Обратите внимание, что некоторые языки вызывают этот метод defaults
или inject
, как его можно представить, как способ ввода значений b (которые могут быть набором значений по умолчанию) в словарь без перезаписи значений, которые могут уже существовать.
Конечно, вы можете просто заметить, что a.extend(b)
это почти так же, как b.update(a); a=b
. Чтобы удалить назначение, вы можете сделать это так:
def extend(a,b):
"""Create a new dictionary with a's properties extended by b,
without overwriting.
>>> extend({'a':1,'b':2},{'b':3,'c':4})
{'a': 1, 'c': 4, 'b': 2}
"""
return dict(b,**a)
Спасибо Тому Лису за эту умную идею, использующую конструктор без побочных эффектов dict
для extend
.