Mam dwa słowniki Pythona i chcę napisać pojedyncze wyrażenie, które zwraca te dwa słowniki, połączone. Metoda update()
byłaby tym, czego potrzebuję, gdyby zwracała swój wynik zamiast modyfikować 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}
Jak mogę uzyskać ten ostateczny połączony słownik w z
, a nie w x
?
(Żeby było jasne, ostatnia-jedyna-wygrana obsługa konfliktu z dict.update()
jest tym, czego również szukam).
W twoim przypadku, to co możesz zrobić to:
z = dict(x.items() + y.items())
To, tak jak chcesz, umieści końcowy dict w z
, i sprawi, że wartość dla klucza b
zostanie prawidłowo nadpisana przez drugą (y
) wartość dict':
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())
>>> z
{'a': 1, 'c': 11, 'b': 10}
Jeśli używasz Pythona 3, jest to tylko trochę bardziej skomplikowane. Aby utworzyć z
:
>>> z = dict(list(x.items()) + list(y.items()))
>>> z
{'a': 1, 'c': 11, 'b': 10}