Adăugarea de elemente la un dicționar și alăturarea dicționarelor în Python

Afaceri

Această secțiune explică cum să adăugați elemente noi într-un dicționar (obiect de tip dict) sau să actualizați valoarea unui element existent în Python. De asemenea, este posibil să concatenăm (alăturăm, îmbinăm) mai multe dicționare.

  • Adăugați și actualizați elemente în dicționar specificând chei.
  • Concatenarea (fuzionarea) mai multor dicționare: update (), | operator, | = operator
  • Adăugați sau actualizați mai multe elemente: update (), | = operator

Adăugați și actualizați elemente în dicționar specificând chei.

Puteți adăuga / actualiza elemente de dicționar în felul următor.

Obiect de dicționar [cheie] = valoare

Când este specificată o cheie inexistentă, se adaugă un element nou, iar când este specificată o cheie existentă, valoarea existentă este actualizată (suprascrisă).

d = {'k1': 1, 'k2': 2}

d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}

Dacă nu doriți să actualizați valoarea unei chei care există, utilizați metoda setdefault ().

Concatenează (îmbină) mai multe dicționare: update (), | operator, | = operator

update()

Dacă un alt obiect dicționar este specificat ca argument pentru metoda obiectului dicționar update (), toate elementele sale vor fi adăugate.

Dacă cheia se suprapune cu o cheie existentă, aceasta va fi suprascrisă cu valoarea dicționarului specificată în argument.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Este o eroare să specificați mai multe dicționare în argumentul update ().

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2

După cum s-a explicat mai târziu, update () poate adăuga elemente noi ca argumente ale cuvintelor cheie (cheie = valoare), așa că trebuie doar să adăugați ** în dicționar și să extindeți fiecare element ca argument de cuvânt cheie și să îl transmiteți.

d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

Ca și în exemplele anterioare, folosind update () se va actualiza obiectul dicționar original.

Dacă doriți să generați un dicționar nou prin combinarea mai multor dicționare, utilizați {** d1, ** d2} (din Python 3.5) sau dict (** d1, ** d2).

În Python 3.9 și versiunile ulterioare, este de asemenea posibil să creați un dicționar nou folosind | operatorul descris în continuare.

| operator, | = operator (Python 3.9 și versiuni ulterioare)

Din Python 3.9, este posibil să fuzionăm două dicționare folosind | operator. Când două dicționare au aceeași cheie, valoarea din dreapta are prioritate.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}

| De asemenea, este posibil să combinați mai multe dicționare utilizând o serie de operatori.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

+ Ca și în cazul actualizării (), obiectul din partea stângă este actualizat.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Adăugați sau actualizați mai multe elemente: update (), | = operator

update()

Când argumentul cuvânt cheie cheie = valoare este specificat în metoda update (), cheia cheie și valoarea valorii vor fi adăugate. Dacă cheia se suprapune cu o cheie existentă, aceasta va fi suprascrisă cu valoarea specificată în argument.

d = {'k1': 1, 'k2': 2}

d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

De asemenea, este posibil să specificați o listă de (cheie, valoare) ca argument pentru metoda update (). Dacă cheia se suprapune cu o cheie existentă, va fi suprascrisă cu valoarea specificată ca argument.

d = {'k1': 1, 'k2': 2}

d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

În combinație cu funcția zip (), elementele pot fi adăugate dintr-o listă de taste și o listă de valori.

d = {'k1': 1, 'k2': 2}

keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]

d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

| = operator (Python 3.9 și versiuni ulterioare)

Cu operatorul | =, o listă de (cheie, valoare) poate fi specificată în partea dreaptă.

d = {'k1': 1, 'k2': 2}

d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Rețineți că specificarea unei liste cu | operatorul va duce la o eroare. Sunt acceptate numai operațiile de la un dicționar la altul.

# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'
Copied title and URL