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'