Diğerlerinin de belirttiği gibi, a.update(b)
bazı zorluklar için a
ve b
sorunuzda istediğiniz sonucu elde edeceksiniz. Ancak, birçok kez extend
nesneleri eşleme / ayarlama yönteminin sözdiziminde a.extend(b)
, a
değerlerinin değerlerinin üzerine yazılmaması gerektiğine işaret ettiğimi belirtmek isterim b
. değerlerinin a.update(b)
üzerine yazar a
ve bunun için iyi bir seçim değildir extend
.
Bazı dillerin bu yöntemi çağırdığını defaults
veya inject
b'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 dict
kurucu kullanarak bu akıllı fikir için teşekkürler extend
.