Dodavanje elemenata u rječnik i spajanje rječnika u Pythonu

Poslovanje

Ovaj odjeljak objašnjava kako dodati nove elemente u rječnik (objekt tipa dict) ili ažurirati vrijednost postojećeg elementa u Pythonu. Također je moguće povezati (povezati, spojiti) više rječnika.

  • Dodavanje i ažuriranje elemenata u rječnik određivanjem tipki.
  • Spajanje (spajanje) više rječnika: update (), | operator, | = operator
  • Dodavanje ili ažuriranje više elemenata: update (), | = operator

Dodavanje i ažuriranje elemenata u rječnik određivanjem tipki.

Elemente rječnika možete dodati / ažurirati na sljedeći način.

Objekt rječnika [ključ] = vrijednost

Kada se navede nepostojeći ključ, dodaje se novi element, a kada se navede postojeći ključ, postojeća vrijednost se ažurira (prepisuje).

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}

Ako ne želite ažurirati vrijednost ključa koji postoji, upotrijebite metodu setdefault ().

Spajanje (spajanje) više rječnika: update (), | operator, | = operator

update()

Ako je drugi objekt rječnika naveden kao argument za metodu ažuriranja metode rječnika (), dodaju se svi njegovi elementi.

Ako se ključ preklapa s postojećim ključem, bit će prepisan vrijednošću rječnika navedenog u argumentu.

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}

Pogreška je specificirati više rječnika u argumentu 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

Kao što je kasnije objašnjeno, update () može dodati nove elemente kao argumente ključne riječi (ključ = vrijednost), pa samo dodajte ** u rječnik i proširite svaki element kao argument ključne riječi i proslijedite ga.

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

Kao i u prethodnim primjerima, korištenjem update () ažurirat ćete izvorni objekt rječnika.

Ako želite generirati novi rječnik spajanjem više rječnika, upotrijebite {** d1, ** d2} (iz Pythona 3.5) ili dict (** d1, ** d2).

U Pythonu 3.9 i novijim verzijama također je moguće stvoriti novi rječnik pomoću | operater opisan sljedeći.

| operator, | = operator (Python 3.9 i noviji)

Od Pythona 3.9, moguće je spojiti dva rječnika pomoću | operater. Kada dva rječnika imaju isti ključ, vrijednost s desne strane ima prioritet.

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}

| Također je moguće kombinirati više rječnika pomoću niza operatora.

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}

+ Kao i kod update (), objekt na lijevoj strani se ažurira.

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

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

Dodavanje ili ažuriranje više elemenata: update (), | = operator

update()

Kada se u metodi update () navede ključ argumenta = vrijednost, dodaju se vrijednost ključa i vrijednosti. Ako se ključ preklapa s postojećim ključem, bit će prepisan vrijednošću navedenom u argumentu.

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

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

Također je moguće navesti popis (ključ, vrijednost) kao argument za metodu update (). Ako se ključ preklapa s postojećim ključem, bit će prepisan vrijednošću navedenom kao argument.

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

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

U kombinaciji s funkcijom zip (), elementi se mogu dodavati s popisa ključeva i popisa vrijednosti.

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 noviji)

Pomoću operatora | = s desne se strane može navesti popis (ključ, vrijednost).

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

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

Imajte na umu da je specificiranje popisa s | operater rezultirat će pogreškom. Podržane su samo operacije rječnika u rječnik.

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