Dodajanje elementov v slovar in združevanje slovarjev v Pythonu

Posel

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'
Copied title and URL