Dictionary, rekurzió¶
Tartalom
A Python dict adattípusa. Rekurzió. Feladatmegoldások dict és rekurzió segítségével.
A szótárak (dict) alapjai¶
A szótár (dictionary) egy olyan adatszerkezet, amely kulcs-érték párokat tárol.
Minden kulcshoz (key) egy érték (value) tartozik, és a kulcsok egyediek.
Szótár létrehozása¶
A szótárakat kapcsos zárójelekkel ({}) hozhatjuk létre, ahol a kulcsokat és értékeket kettőspont (:) választja el.
Egyszerű szótár
1 2 3 4 5 6 7 | |
Kimenet
1 | |
Üres szótár létrehozása:
1 | |
vagy
1 | |
Kulcsok egyedisége
Egy kulcs csak egyszer szerepelhet a szótárban. Ha újra megadjuk ugyanazt a kulcsot, az felülírja a kulcs korábbi értéket.
Értékek elérése és módosítása¶
A szótárban az értékeket kulcs alapján érhetjük el.
Érték lekérdezése
1 2 3 4 | |
Kimenet
1 2 | |
Az [] használata hibát dob, ha a kulcs nem létezik.
A get() ezzel szemben biztonságosabb, és visszaadhat egy alapértelmezett értéket is:
1 | |
Érték módosítása vagy hozzáadása
1 2 3 4 5 | |
Kimenet
1 2 | |
Kulcsok, értékek, elemek bejárása¶
Bejárás kulcsokkal
1 2 3 4 | |
Kimenet
1 2 3 | |
Bejárás kulcs-érték párokkal
1 2 | |
Kimenet
1 2 3 | |
A legfontosabb függvények:
diak.keys()- csak a kulcsokdiak.values()- csak az értékekdiak.items()- kulcs-érték párok
Elem törlése¶
Törlés különböző módokon
1 2 3 4 5 | |
A pop() hasznos
A pop(kulcs) visszaadja a törölt értéket, így akár el is mentheted vagy felhasználhatod.
Beágyazott szótárak¶
Szótárak értékei lehetnek más szótárak is. Ez lehetővé teszi összetettebb adatszerkezetek létrehozását.
Beágyazott szótár
1 2 3 4 5 6 | |
Kimenet
1 | |
Gyakori műveletek¶
| Művelet | Leírás | Példa |
|---|---|---|
len(d) |
Elemszám | len(diak) |
"kulcs" in d |
Ellenőrzi, van-e kulcs | "nev" in diak |
d.update(masik_dict) |
Összefűzés / frissítés | diak.update({"kor": 21}) |
d.copy() |
Másolat készítése | masolat = diak.copy() |
Rekurzió alapjai¶
A rekurzió azt jelenti, hogy egy függvény saját magát hívja meg a megoldás során. Ez különösen hasznos olyan problémáknál, amelyek ugyanarra a logikára épülnek kisebb részfeladatokban is.
Alapötlet¶
Minden rekurzív függvénynek két része van:
- Alapeset (base case) - amikor a függvény nem hívja meg magát újra, hanem visszatér egy eredménnyel.
- Rekurzív eset (recursive case) - amikor a függvény újra meghívja önmagát a probléma egy kisebb részével.
Egyszerű rekurzív példa - visszaszámlálás
1 2 3 4 5 6 7 8 | |
Kimenet
1 2 3 4 5 6 | |
További példák rekurzióra¶
Fibonacci-sorozat
1 2 3 4 5 6 | |
Kimenet
1 | |
Lista elemeinek összege
1 2 3 4 5 6 | |
Kimenet
1 | |
Rekurzió és iteráció
A rekurzió átláthatóbb, de néha lassabb, mint a ciklusos megoldás. Mindig legyen alapeset, különben a függvény végtelenül hívná önmagát.
Feladatok szótárakhoz és rekurzióhoz¶
1. feladat - Diák adatai
Készíts egy szótárat, amely tartalmazza egy diák nevét, életkorát és városát, majd írd ki az adatokat egyesével!
Példamegoldás
1 2 3 | |
2. feladat - Szótár módosítása
Készíts egy szótárat filmekről és pontszámokról. Adj hozzá egy új filmet, majd módosítsd az egyik pontszámát!
Példamegoldás
1 2 3 4 | |
3. feladat - Közös kulcsok
Adott két szótár, amelyek termékeket és áraikat tartalmazzák.
Írd ki, mely termékek szerepelnek mindkettőben!
Példamegoldás
1 2 3 4 5 | |
4. feladat - Legnagyobb érték
Készíts egy szótárat pontszámokkal, és írd ki, melyik kulcshoz tartozik a legnagyobb érték!
Példamegoldás
1 2 3 | |
5. feladat - Beágyazott szótár kezelése
Készíts egy szótárat, amely több diák adatait tárolja (név → {kor, város}).
Írd ki az összes diák nevét és városát!
Példamegoldás
1 2 3 4 5 6 7 | |
6. feladat - Összeg számítása
Írj rekurzív függvényt, amely kiszámolja az első n szám összegét!
7. feladat - Faktoriális
Írj függvényt, amely kiszámolja egy szám faktoriálisát rekurzívan!
8. feladat - Lista elemeinek összege
Írj rekurzív függvényt, amely egy lista összes elemét összeadja!
9. feladat - Fibonacci-szám
Írj függvényt, amely visszaadja az n-edik Fibonacci-számot!
Összefoglalás¶
A szótár (dict) az egyik leghasznosabb adattípus Pythonban, mivel:
- kulcs-érték párokat tárol,
- gyorsan elérhetők az adatok kulcs alapján,
- rugalmasan bővíthető és módosítható,
- beágyazott formában összetett adatok is kezelhetők.
A rekurzió pedig egy alapvető programozási technika, amely:
- lehetővé teszi, hogy a függvény saját magát hívja meg,
- ideális ismétlődő szerkezetű problémákhoz (pl. faktoriális, fában keresés, Fibonacci),
- a kulcs az alapeset meghatározása, hogy a végtelen hívás elkerülhető legyen.
A szótárak és a rekurzió ismerete erős alapot ad az adatszerkezetek és algoritmusok megértéséhez.