Elementtien lisääminen sanakirjaan ja sanakirjojen yhdistäminen Pythonissa

liiketoiminta

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'