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
# 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!
# 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.
# 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.")