Selles jaotises selgitatakse, kuidas lisada uusi elemente sõnastikku (dict tüüpi objekt) või värskendada Pythonis olemasoleva elemendi väärtust. Samuti on võimalik liita (ühendada, ühendada) mitu sõnastikku.
- Elementide lisamine ja värskendamine sõnastikku, määrates võtmed.
- Mitme sõnaraamatu liitmine (ühendamine): uuendus (), | operaator, | = operaator
- Lisage või värskendage mitut elementi: update (), | = operaator
Elementide lisamine ja värskendamine sõnastikku, määrates võtmed.
Sõnastikuelemente saate lisada / uuendada järgmisel viisil.
Sõnaraamatu objekt [võti] = väärtus
Olematu võtme määramisel lisatakse uus element ja kui olemasolev võti on määratud, siis värskendatakse (kirjutatakse üle).
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}
Kui te ei soovi olemasoleva võtme väärtust värskendada, kasutage meetodit setdefault ().
Mitme sõnastiku liitmine (ühendamine): uuendus (), | operaator, | = operaator
update()
Kui sõnastikuobjekti meetodi värskendusele () on argumendina määratud mõni muu sõnaraamatu objekt, lisatakse kõik selle elemendid.
Kui võti kattub olemasoleva võtmega, kirjutatakse see üle argumendis määratud sõnastiku väärtusega.
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}
Mitme sõnastiku täpsustamine argumendis update () on viga.
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
Nagu hiljem selgitatud, võib update () lisada märksõna argumentidena uusi elemente (võti = väärtus), seega lisage lihtsalt sõnastik ** ja laiendage iga element märksõna argumendina ning edastage see.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Nagu eelmistes näidetes, värskendab värskenduse () kasutamine algset sõnastiku objekti.
Kui soovite uue sõnastiku genereerida mitme sõnaraamatu ühendamise kaudu, kasutage {** d1, ** d2} (Python 3.5-st) või dict (** d1, ** d2).
Pythonis 3.9 ja uuemates versioonides on ka | abil võimalik luua uus sõnastik operaator kirjeldas järgmisena.
| operaator, | = operaator (Python 3.9 ja uuemad)
Alates Python 3.9-st on | abil võimalik ühendada kaks sõnastikku operaator. Kui kahel sõnaraamatul on sama võti, on paremal paremal olev väärtus.
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}
| Operaatide seeria abil on võimalik ka mitu sõnastikku kombineerida.
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}
+ Nagu ka värskenduse () puhul, värskendatakse vasakpoolset objekti.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Lisage või värskendage mitut elementi: update (), | = operaator
update()
Kui meetodis update () määratakse märksõna argument võti = väärtus, lisatakse võtmevõti ja väärtuse väärtus. Kui võti kattub olemasoleva võtmega, kirjutatakse see üle argumendis määratud väärtusega.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Samuti on võimalik meetodi update () argumendina määrata (võti, väärtus) loend. Kui võti kattub olemasoleva võtmega, kirjutatakse see üle argumendina määratud väärtusega.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Koos funktsiooniga zip () saab elemente lisada võtmete loendist ja väärtuste loendist.
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}
| = operaator (Python 3.9 ja uuemad)
Operaatori | = abil saab paremal küljel määrata (võtme, väärtuse) loendi.
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Pange tähele, et loendi määramine | -ga operaator põhjustab vea. Toetatakse ainult toiminguid sõnastikust sõnastikuni.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'