Wie andere erwähnt haben, a.update(b)für einige dicts aund berreichen wird das Ergebnis , das Sie in Ihrer Frage gestellt haben. Ich möchte jedoch darauf hinweisen , dass viele Male habe ich das gesehen extendVerfahren zum Abbilden / set Objekte wünschen , dass in der Syntax a.extend(b), a‚s - Werte sollten nicht durch sein überschrieben bs Werte‘. a.update(b)überschreibt adie Werte und ist daher keine gute Wahl für extend.
Beachten Sie, dass einige Sprachen diese Methode aufrufen defaultsoder inject, da dies als eine Möglichkeit zum Einfügen von b-Werten (bei denen es sich möglicherweise um eine Reihe von Standardwerten handelt) in ein Wörterbuch eingefügt werden kann, ohne möglicherweise bereits vorhandene Werte zu überschreiben.
Natürlich könnte man einfach feststellen, dass dies a.extend(b)fast dasselbe ist wie b.update(a); a=b. Um die Zuordnung zu entfernen, können Sie dies folgendermaßen tun:
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)
Vielen Dank an Tom Leys für diese clevere Idee mit einem dictKonstruktor ohne Nebenwirkungen für extend.