Sõnastik

From Wikiversity

< 12. nädala teemad

Sõnastiku omadused[edit]

Sõnastik (dictionary) on struktuurne andmetüüp. Ta sarnaneb väljanägemiselt listile, kuid on mõnes mõttes üldisem. Listis on indeksiteks vaid täisarvud. Sõnastikus võivad indeksiteks olla mistahes tüüpi väärtused. Sõnastiku puhul ei räägta tegelikult indekist vaid võtmest (key) ja igale võtmele vastab mingi väärtus. Seega moodustavad sõnastiku väärtuste paarid, mis koosnevad võtmest ja väärtusest (key-value pair). Sõnastiku ülesehitus ongi jada omast erinev, ta on vastetüüp (mapping type). Sisuliselt on tegemist paisktüübiga (hashable type). Erinevalt jadast puudub sõnastikus loogiline järjestus. Mis on paiskmeetod, saavad ifikad teada algoritmide ja andmestruktuuride kursusel.

Sõnastiku tähistamiseks kasutatakse loogelisi sulge {}. Näiteks võib programmis teha omistamise:

koordinaadid = {'x': 1, 'y': 2, 'z':3 }

Tekkinud sõnastikus koordinaadid on kolm võtme-väärtuse paari: võtmeteks on stringid x, y ja z ning neile vastavad väärtused 1, 2 ja 3.

Andmete teadasaamiseks saab küsida väärtust võtme järgi ja sarnaselt jadadele kasutatakse kantsulge []:

print(koordinaadid['x'])

Trükitakse ekraanile 1. Ka omistamine toimub läbi võtme:

koordinaadid['y'] =  4

Selle tulemusena muutub võtmega 'y' tähistatud väärtus 2-st 4-ks.

Sõnastikus olevad võtmed peavad olema unikaalsed, st kahte paari sama võtmega ei teki. Omistamise puhul kirjutatakse lihtsalt eelmine samale võtmele vastav väärtus üle. Kui aga võtit eelnevalt sõnastikus ei ole, lisatakse ta sinna. Väärtustena võivad olla kasutusel igasugused Pythonis kasutatavad tüübid, kaasaarvatud listid (st ühele võtmele võib vastata terve väärtuste list).

Sõnastiku loomine[edit]

Eesspool toodud näide moodustas sõnastiku kohe koos sisuga. Võimalik on alustada ka tühjalt kohalt ja programmi töö käigus andmed lisada. Sel juhul tuleb kõigepealt moodustada tühi sõnastik:

arvud = {}

Järgnevalt võib lisada suvaliste võtmetega väärtuseid:

arvud['zwei'] = 'kaks'
arvud['vier'] = 'neli'

Uue võtme korral lisandub sõnastikku uus paar, kui võti on juba olemas, muudetakse talle vastavat väärtust. Hilisemal sõnastiku nö mustal trükkimisel ei teki sama järgnevust kui sõnastiku ehitamisel. See tuleneb tema tehnilisest ülesehitusest - kasutatavast paisktabelist (hash).

Sõnastiku kasutamine[edit]

Sõnastiku saab läbida for-tsüklit kasutades täitsa tavapärasel jadade kasutamisest tuttaval viisil:

for arv in arvud:
   print arv

in-operaatori abil on võimalik kontrollida võtme kuulumist sõnastikku. Oluline on meeles pidada, et sõnastikust saab otsida ainult võtme järgi. Kasu võib olla meetoditest keys() ja values():

dict.keys()

tagastab listina kõik sõnastiku võtmed ning

dict.values() 

tagastab listina sõnastiku väärtused. Kindlasti ei saa sõnastikku sorteerida, kuid mõnigase pingutusega saab sõnastikust moodustada sorteeritud listi.

< 12. nädala teemad