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
Mit fogunk tanulni?
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:
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:
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"]