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