A szótár alapvetően adatpárokat tárol: egy kulcsot és a kozzá tartozó értéket. A kulcsok egyediek, nem lehet benne két azonos kulcs! Az értékek bármilyen adattípusúak lehetnek: szöveg, szám, másik szótár…
A szótárból az értékeket a kulcsok segítségével tudjuk elérni.
Nézzünk egy nagyon egyszerű példát, tároljuk el a segélyhívó számokat szótár segítségével!
A szótár elemei törölhetők, megváltoztathatók.
A szótár elemeit kapcsos zárójelek közé kell tenni, a kulcs és az érék közé kettőspont kerül, az elemek közé vessző.
A Python szótár adattípusához számos beépített függvény és módszer tartozik, amelyek lehetővé teszik az adatok hatékony kezelését. Néhány fontosabb függvény és módszer:
len() – visszatér a szótárban tárolt kulcs-érték párok számával
keys() – visszaadja a szótárban tárolt összes kulcsot egy listában
values() – visszaadja a szótárban tárolt összes értéket egy listában
items() – visszaadja a szótárban tárolt összes kulcs-érték párt egy lista formájában
get(key, default=None) – visszatér a megadott kulcshoz tartozó értékkel, ha a kulcs létezik a szótárban. Ha a kulcs nem létezik, akkor az alapértelmezett értéket adja vissza
pop(key, default=None) – eltávolítja a megadott kulcshoz tartozó kulcs-érték párt a szótárból, és visszatér a kulcshoz tartozó értékkel. Ha a kulcs nem létezik, akkor az alapértelmezett értéket adja vissza
del() – eltávolítja a megadott kulcshoz tartozó kulcs-érték párt a szótárból, de akár az egész szótár is törölhető vele
update(dict) – hozzáadja a megadott szótár kulcs-érték párait a szótárhoz, felülírva azokat, amelyek megegyeznek a meglévő kulcsokkal
in, vagy contains key – segítségével ellenőrizhető, hogy a megadott kulcs benne van-e a szótárban
clear() – eltávolítja az összes kulcs-érték párt a szótárból
copy() – visszatér egy másolattal a szótárról
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# szótár létrehozása telefonszamok={"mentők":104,"rendőrség":107,"tűzoltóság":105} # rendőrség telefonszáma: print (telefonszamok["rendőrség"]) # ha nincs benne az adott szó a szótárban print(telefonszamok.get("iskola","Nincs ilyen adat!")) #szótár tartalma print(telefonszamok) #új adat hozzáadása: sima értékadás, módosítás ugyanígy telefonszamok["Általános segélyhívó"] = 111 telefonszamok["Általános segélyhívó"] = 112 telefonszamok["Medicopter117"] = 117 print(telefonszamok) # törlés del(telefonszamok['Medicopter117']) # Érték másolása telefonszamok["police"]=telefonszamok["rendőrség"] # szótár hossza print(len(telefonszamok)) # kulcsok kiiratása print(telefonszamok.keys()) # étrékek kiiratása print(telefonszamok.values()) # Szótár tartalmának kiiratása összetett listaként print(telefonszamok.items()) # szótár bejárása, kulcsok kiiratása for kulcs in telefonszamok: print(kulcs) # keys metódus - a kulcsokhoz tartozó értékek kiírása for kulcs in telefonszamok.keys(): print(kulcs,"telefonszáma: ",telefonszamok[kulcs]) # items metódus - listaelemekre hasonlít, kulcs és érték for kulcs, ertek in telefonszamok.items(): print(kulcs, "telefonszáma: ",ertek) # Elemek kiiratása 1 első elemtől a szótár utolsó eleméig for key, ertek in list(telefonszamok.items())[1:]: print(key + ": " + str(ertek)) for key, value in list(telefonszamok.items())[1:3]: print(key + ": " + str(value)) # values() metódus, ha kizárólag az értékeket akarjuk kiíratni for ertek in telefonszamok.values(): print(ertek) # Adott kulcs benne van-e a szótárban? print("rendőrség" in telefonszamok.keys()) # print("rendőrség" in telefonszamok.keys()) # Adott érték benne van-e a szótárban? print(112 in telefonszamok.values()) |
Feladat: Tárold szótárban a hónapok nevét, és azt, hogy hány napból állnak! A program kérje be egy hónap nevét, és írja ki hány napos a megadott hónap!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# a hónapok és a hozzájuk tartozó napok száma honapok = {"január": 31, "február": 28, "március": 31, "április": 30, "május": 31, "június": 30, "július": 31, "augusztus": 31, "szeptember": 30, "október": 31, "november": 30, "december": 31} # a felhasználótól kérjük be a hónap nevét honap = input("Adja meg a kívánt hónap nevét: ") # ellenőrizzük, hogy az adott hónap szerepel-e a szótárban if honap in honapok: # ha igen, kiírjuk a hónap nevét és a hozzá tartozó napok számát print(f"{honap.capitalize()} hónapban {honapok[honap]} nap van.") else: # ha nem, kiírjuk, hogy nincs ilyen hónap print("Nincs ilyen hónap.") |
Feladat: Készíts egyszerű telefonkönyvet!
A program funkciói: szótár tartalmának megjelenítése, új elem felvétele, telefonszám módosítása, elem törlése, adatok mentése txt-be.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# Szótár inicializálása a txt fájl tartalmával telefonkonyv = {} with open("adatok.txt", "r") as file: for sor in file: nev, szam = sor.strip().split(",") telefonkonyv[nev] = szam # While ciklus indítása a menüvel while True: print("1. Szótár tartalma") print("2. Új elem felvétele") print("3. Elem törlése") print("4. Elem módosítása") print("5. Kilépés") opcio = input("Válassz egy menüpontot (1-5): ") # Szótár tartalmának megjelenítése if opcio == "1": for nev, szam in telefonkonyv.items(): print(nev, szam) # Új elem felvétele elif opcio == "2": nev = input("Add meg az új névét: ") szam = input("Add meg a hozzá tartozó telefonszámot: ") telefonkonyv[nev] = szam print("Az új elem felvéve.") # Elem törlése elif opcio == "3": nev = input("Add meg a törlendő névét: ") if nev in telefonkonyv: del telefonkonyv[nev] print("Az elem törölve.") else: print("Nem található ilyen név a szótárban.") # Elem módosítása elif opcio == "4": nev = input("Add meg a módosítandó névét: ") if nev in telefonkonyv: szam = input("Add meg az új telefonszámot: ") telefonkonyv[nev] = szam print("Az elem módosítva.") else: print("Nem található ilyen név a szótárban.") # Kilépés elif opcio == "5": print("Viszlát! Adatok mentése...2") with open("adatok.txt", "w") as file: for nev, szam in telefonkonyv.items(): file.write(nev + "," + szam + "\n") break # Hibakezelés else: print("Érvénytelen választás. Válassz újra.") |