Szótárak a Pythonban

Mi az a szótár (dictionary)?

A szótár egy olyan adatszerkezet a Pythonban, amely kulcs-érték párokat tárol. Minden kulcshoz egy érték tartozik, és a kulcsok egyediek. A szótárak rendkívül hasznosak adatok strukturált tárolására.

szemely = {
    "nev": "Kiss Anna",
    "kor": 25,
    "varos": "Budapest"
}

# Érték elérése kulcs alapján
print(szemely["nev"])  # Kiírja: Kiss Anna
Szótár tartalma:

Mit fogunk tanulni?

Szótár műveletek (létrehozás, módosítás, törlés)
Értékek elérése és kezelése
Beágyazott szótárak kezelése

Szótár Műveletek

Alapvető műveletek

A Python szótárakon számos műveletet végezhetünk: hozzáadhatunk új elemeket, módosíthatunk és törölhetünk meglévőket, valamint különböző módon érhetjük el az értékeket.

szotar = {}  # Üres szótár létrehozása

# Elem hozzáadása
szotar["alma"] = 150  # ár hozzáadása
szotar["körte"] = 200

# Elem módosítása
szotar["alma"] = 160  # ár módosítása

# Elem törlése
del szotar["körte"]

# Érték lekérése get() metódussal (biztonságos)
ar = szotar.get("alma", 0)  # Ha nincs "alma", 0-át ad vissza

Próbáld ki a műveleteket:

Gyümölcsök és áraik:

Speciális műveletek

A Python szótárak számos hasznos beépített metódussal rendelkeznek, amelyekkel komplex műveleteket végezhetünk.

termekek = {
    "laptop": 250000,
    "telefon": 150000
}

# update() - Több elem hozzáadása egyszerre
uj_termekek = {"tablet": 100000, "egér": 5000}
termekek.update(uj_termekek)

# keys() - Kulcsok lekérése
kulcsok = list(termekek.keys())

# values() - Értékek lekérése
ertekek = list(termekek.values())

# items() - Kulcs-érték párok lekérése
for termek, ar in termekek.items():
    print(f"{termek}: {ar} Ft")

Termékek kezelése:

Tömeges hozzáadás/frissítés:

Lekérdezések:

Termékek adatbázis:

Beágyazott Szótárak

Mi az a beágyazott szótár?

A beágyazott szótár olyan szótár, amelynek értékei maguk is szótárak. Ez lehetővé teszi komplex, hierarchikus adatstruktúrák létrehozását.

iskola = {
    "9.A": {
        "osztályfőnök": "Nagy János",
        "létszám": 28,
        "tanulók": {
            "Kiss Anna": {
                "matematika": 5,
                "magyar": 4
            },
            "Tóth Béla": {
                "matematika": 4,
                "magyar": 5
            }
        }
    }
}

Osztálynapló kezelése:

Beágyazott szótárak kezelése

A beágyazott szótárak értékeit a kulcsok láncolatával érhetjük el. Vigyáznunk kell, hogy elkerüljük a KeyError hibákat.

try:
    # Érték elérése több szintről
    anna_matek = iskola["9.A"]["tanulók"]["Kiss Anna"]["matematika"]

    # Biztonságos elérés get() metódussal
    bela_magyar = iskola.get("9.A", {}).get("tanulók", {}).get("Tóth Béla", {}).get("magyar", "nincs adat")
except KeyError as e:
    print(f"Hiba: {e} kulcs nem található!")

Jegyek lekérdezése:

Kombinált Példák és Gyakorlatok

Webshop készletkezelés

Ebben a példában egy webshop készletét és árait kezeljük beágyazott szótárak és különböző műveletek kombinálásával.

webshop = {
    "elektronika": {
        "laptop": {
            "készlet": 5,
            "ár": 250000,
            "jellemzők": {
                "processzor": "i5",
                "ram": "8GB"
            }
        }
    },
    "ruházat": {
        "póló": {
            "készlet": 100,
            "ár": 3000,
            "jellemzők": {
                "méret": ["S", "M", "L"],
                "szín": ["fehér", "fekete"]
            }
        }
    }
}

# Komplex műveletek
def termék_kezelés(webshop, kategória, termék, művelet, **adatok):
    if művelet == "készlet_módosítás":
        webshop[kategória][termék]["készlet"] += adatok["mennyiség"]
    elif művelet == "ár_módosítás":
        webshop[kategória][termék]["ár"] = adatok["új_ár"]

Webshop kezelőfelület:

Készletkezelés:

Árkezelés:

Termék jellemzők: