dict.update() și operatorul | în Python

Metode pentru dicționare Python 3.0+ (| și |=: 3.9+)

Adaugă sau suprascrie mai multe chei deodată, dintr-un alt dicționar sau din perechi.

Sintaxă
dictionar.update([alt_dict], **kwargs)
nou = d1 | d2
d1 |= d2

Ce face dict.update() și operatorul |

update() copiază în dicționar toate perechile primite: dintr-un alt dicționar, dintr-o listă de perechi sau din argumente cu nume. Cheile existente primesc valorile noi.

Din Python 3.9, d1 | d2 creează un dicționar nou din cele două (valorile din d2 câștigă), iar d1 |= d2 este echivalent cu d1.update(d2). Înainte de 3.9 se folosea {**d1, **d2}.

Parametri

Parametru Descriere
other, **kwargs Dicționar, listă de perechi și/sau argumente cu nume.

Ce returnează

None (update); dicționarul nou (|).

Exemple

Exemplul 1: Setări implicite suprascrise de utilizator

implicite = {"limba": "en", "tema": "luminoasă", "font": 12}
utilizator = {"limba": "ro", "font": 14}

setari = implicite.copy()
setari.update(utilizator)
print(setari)
print(implicite | utilizator)
print({**implicite, **utilizator} == implicite | utilizator)

Rezultat

{'limba': 'ro', 'tema': 'luminoasă', 'font': 14}
{'limba': 'ro', 'tema': 'luminoasă', 'font': 14}
True

Exemplul 2: Alte forme ale lui update()

d = {"a": 1}
d.update([("b", 2), ("c", 3)])
d.update(d=4, a=10)
print(d)

Rezultat

{'a': 10, 'b': 2, 'c': 3, 'd': 4}

Greșeli frecvente

  • Scrii d = d.update(...) și dicționarul devine None.
  • Folosești d1 | d2 pe Python 3.8 sau mai vechi și primești TypeError: unsupported operand type(s) for |.

Comenzi înrudite

  • dict (dicționare): Dicționarul păstrează perechi cheie: valoare și găsește rapid valoarea după cheie.
  • dict.setdefault(): Returnează valoarea unei chei; dacă cheia lipsește, o adaugă mai întâi cu o valoare implicită.
  • collections.ChainMap: Grupează mai multe dicționare într-o singură vedere: o cheie este căutată pe rând în fiecare.