Как уже упоминалось, a.update(b)
для некоторых dicts a
и b
добьетесь результата вы просили в вашем вопросе. Тем не менее, я хочу отметить, что много раз я видел метод сопоставления/установки объектов , что в синтаксисе a.extend(b)
значения a
НЕ должны быть перезаписаны значениями b
. 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
.
Я знал для списков [], тогда я могу использовать работу для других, а не extrange ;-) – FerranB