Ho due dizionari Python, e voglio scrivere una singola espressione che restituisca questi due dizionari, uniti. Il metodo update()
sarebbe ciò di cui ho bisogno, se restituisse il suo risultato invece di modificare un dict in-place.
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = x.update(y)
>>> print(z)
None
>>> x
{'a': 1, 'b': 10, 'c': 11}
Come posso ottenere il dict finale fuso in z
e non in x
?
(Per essere più chiaro, la gestione dei conflitti con l'ultimo vincitore di dict.update()
è quello che sto cercando).
Nel tuo caso, quello che puoi fare è:
z = dict(x.items() + y.items())
Questo, come vuoi tu, metterà il dict finale in z
, e farà sì che il valore della chiave b
sia correttamente sovrascritto dal secondo (y
) dict'valore:
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())
>>> z
{'a': 1, 'c': 11, 'b': 10}
Se usate Python 3, è solo un po' più complicato. Per creare z
:
>>> z = dict(list(x.items()) + list(y.items()))
>>> z
{'a': 1, 'c': 11, 'b': 10}