Tässä osassa kerrotaan, kuinka uusia elementtejä lisätään sanakirjaan (dict type -objekti) tai päivitetään olemassa olevan elementin arvo Pythonissa. On myös mahdollista liittää (liittää, yhdistää) useita sanakirjoja.
- Lisää ja päivitä sanastoon elementtejä määrittämällä avaimet.
- Useiden sanakirjojen liittäminen (yhdistäminen): päivitys (), | operaattori, | = operaattori
- Lisää tai päivitä useita elementtejä: update (), | = operaattori
Lisää ja päivitä sanastoon elementtejä määrittämällä avaimet.
Voit lisätä / päivittää sanakirjaelementtejä seuraavalla tavalla.
Sanakirjaobjekti [avain] = arvo
Kun määritetään olematon avain, uusi elementti lisätään ja kun olemassa oleva avain määritetään, nykyinen arvo päivitetään (korvataan).
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}
Jos et halua päivittää olemassa olevan avaimen arvoa, käytä setdefault () -menetelmää.
Yhdistä (yhdistä) useita sanakirjoja: päivitä (), | operaattori, | = operaattori
update()
Jos sanakirjaobjektin menetelmäpäivitykselle () määritetään argumenttina toinen sanakirjaobjekti, kaikki sen elementit lisätään.
Jos avain menee päällekkäin olemassa olevan avaimen kanssa, se korvataan argumentissa määritetyn sanakirjan arvolla.
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}
On virhe määrittää useita sanakirjoja päivitys () -argumenttiin.
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
Kuten myöhemmin selitettiin, update () voi lisätä uusia elementtejä avainsana-argumentteina (avain = arvo), joten lisää vain ** sanakirjaan ja laajenna jokainen elementti avainsana-argumenttina ja välitä se.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Kuten edellisissä esimerkeissä, päivityksen () käyttö päivittää alkuperäisen sanakirjaobjektin.
Jos haluat luoda uuden sanakirjan yhdistämällä useita sanakirjoja, käytä {** d1, ** d2} (Python 3.5: sta) tai dict (** d1, ** d2).
Python 3.9: ssä ja sitä uudemmissa versioissa on myös mahdollista luoda uusi sanakirja | seuraavaksi kuvattu operaattori.
| operaattori, | = operaattori (Python 3.9 ja uudemmat)
Python 3.9: n jälkeen on mahdollista yhdistää kaksi sanakirjaa | operaattori. Kun kahdella sanakirjalla on sama avain, oikealla olevalla arvolla on etusija.
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}
| On myös mahdollista yhdistää useita sanakirjoja käyttämällä useita operaattoreita.
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}
+ Kuten päivityksen () kohdalla, vasemmalla puolella oleva objekti päivitetään.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Lisää tai päivitä useita elementtejä: update (), | = operaattori
update()
Kun avainsanan argumenttiavain = arvo määritetään update () -menetelmässä, avainavain ja arvon arvo lisätään. Jos avain menee päällekkäin olemassa olevan avaimen kanssa, se korvataan argumentissa määritetyllä arvolla.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
On myös mahdollista määrittää luettelo (avain, arvo) argumenttina update () -menetelmälle. Jos avain menee päällekkäin olemassa olevan avaimen kanssa, se korvataan argumenttina määritetyllä arvolla.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Yhdessä zip () -funktion kanssa elementtejä voidaan lisätä näppäinluettelosta ja arvoluettelosta.
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}
| = operaattori (Python 3.9 ja uudemmat)
| = -Operaattorilla oikealle puolelle voidaan määrittää luettelo (avain, arvo).
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Huomaa, että määrittelemällä luettelon | operaattori johtaa virheeseen. Vain sanakirjasta sanakirjaan -toimintoja tuetaan.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'