Wie andere erwähnt haben, a.update(b)
für einige dicts a
und b
erreichen wird das Ergebnis , das Sie in Ihrer Frage gestellt haben. Ich möchte jedoch darauf hinweisen , dass viele Male habe ich das gesehen extend
Verfahren zum Abbilden / set Objekte wünschen , dass in der Syntax a.extend(b)
, a
‚s - Werte sollten nicht durch sein überschrieben b
s Werte‘. a.update(b)
überschreibt a
die Werte und ist daher keine gute Wahl für extend
.
Beachten Sie, dass einige Sprachen diese Methode aufrufen defaults
oder 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 dict
Konstruktor ohne Nebenwirkungen für extend
.