Jeg har to Python-ordbøker, og jeg vil skrive et enkelt uttrykk som returnerer disse to ordbøkene, slått sammen. Metoden update()
ville være det jeg trenger, hvis den returnerte resultatet i stedet for å endre en 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}
Hvordan kan jeg få den endelige sammenslåtte dict i z
, ikke x
?
(For å være ekstra tydelig, den siste som vinner konflikthåndtering av dict.update()
er det jeg er ute etter også).
I ditt tilfelle kan du gjøre følgende:
z = dict(x.items() + y.items())
Dette vil, slik du vil ha det, sette den siste dict i z
, og gjøre at verdien for nøkkel b
blir riktig overstyrt av den andre (y
) dict's verdi:
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())
>>> z
{'a': 1, 'c': 11, 'b': 10}
Hvis du bruker Python 3, er det bare litt mer komplisert. For å opprette z
:
>>> z = dict(list(x.items()) + list(y.items()))
>>> z
{'a': 1, 'c': 11, 'b': 10}