V tem razdelku je razloženo, kako dodati nove elemente v slovar (predmet tipa dict) ali posodobiti vrednost obstoječega elementa v Pythonu. Prav tako je mogoče združiti (združiti, združiti) več slovarjev.
- Dodajanje in posodabljanje elementov v slovar z določitvijo tipk.
- Združevanje (združevanje) več slovarjev: update (), | operator, | = operater
- Dodajte ali posodobite več elementov: update (), | = operator
Dodajanje in posodabljanje elementov v slovar z določitvijo tipk.
Elemente slovarja lahko dodate / posodobite na naslednji način.
Slovarski objekt [ključ] = vrednost
Ko je podan neobstoječi ključ, se doda nov element, in ko je podan obstoječi ključ, se obstoječa vrednost posodobi (prepiše).
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}
Če ne želite posodobiti vrednosti obstoječega ključa, uporabite metodo setdefault ().
Združi (združi) več slovarjev: update (), | operator, | = operater
update()
Če je drug argument slovarja podan kot argument za metodo slovarjevega predmeta update (), bodo dodani vsi njegovi elementi.
Če se ključ prekriva z obstoječim ključem, se prepiše z vrednostjo slovarja, določenega v 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}
Napaka pri določanju več slovarjev v 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
Kot je bilo pojasnjeno kasneje, lahko update () doda nove elemente kot argumente ključnih besed (ključ = vrednost), zato preprosto dodajte ** v slovar in razširite vsak element kot argument ključne besede ter ga posredujte.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Kot v prejšnjih primerih bo tudi z uporabo update () posodobljen izvirni slovarski objekt.
Če želite ustvariti nov slovar z združevanjem več slovarjev, uporabite {** d1, ** d2} (iz Pythona 3.5) ali dict (** d1, ** d2).
V Pythonu 3.9 in novejših različicah je mogoče tudi ustvariti nov slovar z uporabo | naslednji operater.
| operator, | = operator (Python 3.9 in novejši)
Od Pythona 3.9 je mogoče združiti dva slovarja z uporabo | operater. Ko imata dva slovarja isti ključ, ima prednost vrednost na desni.
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}
| Prav tako je mogoče kombinirati več slovarjev z uporabo vrste operatorjev.
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}
+ Tako kot pri update () se tudi objekt na levi strani posodobi.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Dodajte ali posodobite več elementov: update (), | = operator
update()
Ko je v metodi update () podan argument ključne besede = vrednost, se dodata vrednost ključa in vrednosti ključa. Če se ključ prekriva z obstoječim ključem, se prepiše z vrednostjo, navedeno v argumentu.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Prav tako je mogoče kot argument za metodo update () določiti seznam (ključ, vrednost). Če se ključ prekriva z obstoječim ključem, se prepiše z vrednostjo, določeno kot argument.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
V kombinaciji s funkcijo zip () lahko elemente dodajamo s seznama ključev in seznama vrednosti.
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 in novejši)
Z operatorjem | = lahko na desni strani podate seznam (ključ, vrednost).
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Upoštevajte, da določanje seznama z | operater bo povzročil napako. Podprte so samo operacije slovar v slovar.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'