Як уже згадували інші, 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
.