Como outros já mencionaram, a.update(b)
para alguns ditados a
e b
alcançarão o resultado solicitado em sua pergunta. No entanto, quero ressaltar que muitas vezes vi o extend
método de mapear / definir objetos que, na sintaxe a.extend(b)
, a
os valores de NÃO devem ser substituídos pelos b
valores de. a.update(b)
sobrescreve a
os valores e, portanto, não é uma boa opção paraextend
.
Observe que alguns idiomas chamam esse método defaults
ouinject
, como pode ser considerado como uma maneira de injetar os valores de b (que podem ser um conjunto de valores padrão) em um dicionário sem substituir os valores que já possam existir.
Obviamente, você pode observar que a.extend(b)
é quase o mesmo que b.update(a); a=b
. Para remover a atribuição, você pode fazer o seguinte:
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)
Agradecemos a Tom Leys pela ideia inteligente de usar um dict
construtor sem efeitos colaterais extend
.