dictionary = szótár
Olyan adatszerkezet, melynek elemeit KULCSOKKAL INDEXELJÜK. (A listákat a természetes számokkal indexeljük.)
Feladata, hogy a kulcs – érték párok eltárolása után a kulcs segítségével értékeket tudjunk az adatszerkezetből kivenni.
A szótár kulcs – érték párok létrehozása szerinti sorrendben tárolja az adatokat.
A kulcsok csak megváltoztathatatlan adattípusok (pl. számok, szövegek) lehetnek csak!!!
Jele: { } (Akárcsak a halmaznak!)
Szótár létrehozása
d1 = {}
d2 = {1:”almafa”, 2:”körtefa”, 3:”diófa”}
d2[4] = „szilvafa”
d3 = {„név”:”Pista”, „bukás”:False, „kedvenc tantárgyai”:[„matek”, „fizika”, „info”], „osztály”:”12.C”, „nyelvvizsga”:[„angol”, „orosz”]}
gyumik = [(1, „alma”), (2, „körte”), (3, „cseresznye”)]
d4 = dict(gyumik) (A „gyumik” egy lista, melynek az elemei tuple-ök. A dict egy ún. konstruktor.)
Az előzőt természetesen lehet közvetlenül is: d4 = [(1, „alma”), (2, „körte”), (3, „cseresznye”)]
Alapvető műveletek
Elem elérése
Egy értékhez a kulcson keresztül (a kulcs ismeretében) férhetünk hozzá.
print(d3[„név”]) ↦ Pista Ez, ha nincs a szótárban „név” kulcs, akkor hibát eredményez.
print(d3.get(„életkor”) ↦ None Nincs a szótárban „életkor” kulcs. Hibát nem eredményez, csak a None értéket adja vissza.
Szótárak módosítása
d3[„életkor”] = 17 Ha olyan kulcsot adunk meg, amely eddig még nem szerepelt, akkor egy új kulcs – érték pár jön létre, egyébként az adott kulcshoz tartozó értéket felülírja.
Törlés
d3.pop(„bukás”)
d3.popitem()
del d3[„név”]
d3.clear()
del d3
A lefontosabb metódusok
d3.keys(): Egy listában adja vissza a d3 összes kulcsát.
d3.values(): Egy listában adja vissza a d3 összes értékét.
d3.has_key(„név”): Megadja, hogy a szótár tartalmazza-e a „név” kulcsot.
d3.items(): A d3 szótárból egy vele egyenértékű, tuplekből álló listát készít.
d3.get(kulcs, visszatérési érték): Az 1. paraméter a keresési kulcs, a 2. paraméter pedig az az érték, amit visszatérési értékként szeretnénk kapni abban az esetben, ha a kulcs nincs a szótárban.
Szótár bejárása
for i in d3:
print(i)
Vigyázat!!! Az iterráció során a kulcsok lesznek egymás után hozzá rendelve az „i” változóhoz, és nem pedig az értékek. Az elemekhez való hozzáférés sorrendjét sem lehet előre látni, mivel a szótár nem szekvencia.
Szótár szép (=jobb teljesítmény, jobb olvashatóság) bejárására használjuk a következő formát!
for kulcs, ertek in d3.items():
print(kulcs, ertek)
Mivel a szótárak nem szekvenciák, ezért nagyon jól használhatók olyan adategyüttesek kezelésénél, amelyekbe gyakran kell tetszőleges sorrendben adatokat beszúrni vagy törölni. Jól helyettesítik a listákat, mikor olyan adatokat kell kezelni, melyeknek a sorszámai nem egymásra következők.