Diğerlerinin de belirttiği gibi, a.update(b)bazı zorluklar için ave bsorunuzda istediğiniz sonucu elde edeceksiniz. Ancak, birçok kez extendnesneleri eşleme / ayarlama yönteminin sözdiziminde a.extend(b), adeğerlerinin değerlerinin üzerine yazılmaması gerektiğine işaret ettiğimi belirtmek isterim b. değerlerinin a.update(b)üzerine yazar ave bunun için iyi bir seçim değildir extend.
Bazı dillerin bu yöntemi çağırdığını defaultsveya injectb'nin değerlerini (varsayılan değerler kümesi olabilir) zaten var olan değerlerin üzerine yazmadan bir sözlüğe enjekte etmenin bir yolu olarak düşünülebileceğini unutmayın.
Tabii ki, a.extend(b)neredeyse aynı olan basit bir not olabilir b.update(a); a=b. Ödevi kaldırmak için şu şekilde yapabilirsiniz:
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)
Tom Leys'e, yan etkisi olmayan bir dictkurucu kullanarak bu akıllı fikir için teşekkürler extend.