Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Szótárak

Bár a listák általánosságában egy kényelmes megoldás arra, hogy egy változóban több információt is tároljunk, előfordulnak olyan esetek, amikor jobb lenne, ha ezek az elemek nem sorszámozva, hanem egyedi nevekkel ellátva lennének elérhetőek – ezekben az esetekben érdemes listák helyett szótárakat használnunk. A szótárak ugyanúgy lehetővé teszik több elem tárolását, azonban ezeket az elemeket sorszám helyett egyedi, általunk meghatározott nevekkel érhetjük el, ezzel könnyebbé téve az adatok átláthatóságát.

Ha például egy könyv kötet adatait szeretnénk tárolni, megtehetjük ezt egy szótár segítségével így:

konyv = {
    "cim": "Eszter ​hagyatéka",
    "iro": "Márai Sándor",
    "kiadas": 1939
}

A szótárak elemeit ezután a listákhoz hasonlóan szögletes zárójelek segítségével érhetjük el, annyi különbséggel, hogy a szögletes zárójelben az elem sorszáma helyett az általunk választott nevet használjuk, pl. a könyv címének kiírása:

print(konyv["cim"])

Hála az egyedi mezőneveknek, így a kódunk átláthatóbb is marad – érdemes lehet tehát az egy konkrét objektumra vonatkozó információk tárolására (pl.: egy könyv, egy diák, egy osztály, stb.) listák helyett szótárakat használni. (természetesen az objektumorientáltság jegyében használhatunk a feladatra osztályokat is, azonban egyszerűbb feladatok megoldása általában nem feltétlen igényli osztályok kialakítását)

Amennyiben szeretnénk megkapni a szótárban található kulcsok ("mezőnevek") listáját, erre is van lehetőség az alábbi módon:

mezok = list(konyv.keys())

A szótár .keys() függvénye visszaadja a mezők neveit egy iterálható objektumként, amit a list(...) utasítással listává alakíthatunk, így végeredményként kapunk egy listát, ami tartalmazza az összes kulcs nevét, tehát jelen példában: ["cim", "iro", "kiadas].

Mivel a szótárban az elemeket azok neve teszi elérhetővé, így – egy adatbázistábla elsődleges kulcsához hasonlóan – annak egyedinek kell lennie, azaz két egyforma nevű elem nem lehet a szótárban! (egyforma értékű természetesen igen)

Listákban a szótárak

Természetesen ha például több könyv adatait szeretnénk tárolni, akkor készíthetünk a könyveket tartalmazó szótárakból is listát, ezzel egy adatbázis-szerű szerkezetet kialakítva, amiben a sorokat sorszám alapján, azon belül az információkat "mezőnév" alapján érhetjük el:

polc = [
    {"cim": "Eszter ​hagyatéka", "iro": "Márai Sándor", "kiadas": 1939},
    {"cim": "A ​budapesti nyakék", "iro": "Ayelet Waldman", "kiadas": 2014},
    {"cim": "Forradalom ​a fizikában", "iro": "Ernst Zimmer", "kiadas": 1942}
]

Ha szeretnénk kiíratni az utolsó (2-es sorszámú) könyv íróját például, akkor azt megtehetjük az alábbi módon:

print(polc[2]["iro"])

Ez egy viszonylag gyakran használt adatszerkezet egyszerűbb táblázatos adatokkal való munkavégzéshez. Természetesen hasonló eredményt listákba ágyazott listákkal is elérhetünk, a szótárak előnye azonban, hogy mivel az elemeket elnevezhetjük, a kódunk átláthatóbb lehet, nem szükséges mindig megjegyeznünk, hogy melyik adat "hányadik oszlopban" volt megtalálható.

Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9 LineFlame fejlesztőeszközével!

Példa megnyitása