Python: Adatszerkezetek IV. – dictionary

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ű, tuple­kbő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.