Slovníky – kúzelná kniha Janka a Marienky
Slovník ukladá údaje ako dvojice kľúč → hodnota:
Meč → 15
Štít → 8
Luk → 10
Kľúč označuje položku a hodnota obsahuje údaj, ktorý k nej patrí. Namiesto číselného indexu preto používame zmysluplný názov.
Vytvorenie slovníka
Slovník zapisujeme do zložených zátvoriek {}. Kľúč od hodnoty oddeľujeme dvojbodkou a položky čiarkou.
poklady = {
"Meč": 15,
"Štít": 8,
"Luk": 10
}
V položke "Meč": 15 je "Meč" kľúč a 15 hodnota. Každý kľúč musí byť v slovníku jedinečný.
Funkcia len() vráti počet dvojíc kľúč – hodnota:
print(len(poklady))
Prístup k hodnote
Hodnotu získame pomocou kľúča v hranatých zátvorkách:
print(poklady["Meč"])
Výstup:
15
Kým v zozname by sme použili napríklad index 0, v slovníku použijeme kľúč "Meč".
Hodnoty v jednom slovníku môžu mať rôzne dátové typy:
marienka = {
"meno": "Marienka",
"vek": 15,
"mesto": "Košice",
"čarodejník": False
}
print(marienka["mesto"])
Takýto zápis je zrozumiteľnejší než zoznam, pri ktorom by sme si museli pamätať, na ktorom indexe je meno, vek alebo mesto.
Prístup cez hranaté zátvorky vyvolá pri neexistujúcom kľúči chybu KeyError:
print(poklady["Sekera"])
Ak chýbajúci kľúč nie je chybou programu, môžeme použiť metódu get():
print(poklady.get("Sekera")) # None
print(poklady.get("Sekera", 0)) # 0
Druhý argument určuje hodnotu, ktorá sa vráti, ak kľúč neexistuje.
Priradením hodnoty k existujúcemu kľúču pôvodnú hodnotu prepíšeme:
poklady["Meč"] = 25
Ak kľúč ešte neexistuje, rovnakým zápisom vytvoríme novú položku:
poklady["Elixír"] = 5
Slovník teraz obsahuje štyri položky:
print(poklady)
{'Meč': 25, 'Štít': 8, 'Luk': 10, 'Elixír': 5}
Prechádzanie slovníkom
Obyčajný cyklus for prechádza kľúče slovníka:
for predmet in poklady:
print(predmet)
Tento cyklus prechádza všetky kľúče v slovníku.
Rovnaký výsledok dostaneme s metódou keys():
for predmet in poklady.keys():
print(predmet)
Ak potrebujeme iba hodnoty, použijeme values():
for hodnota in poklady.values():
print(hodnota)
Najčastejšie potrebujeme kľúč aj hodnotu. Metóda items() ich poskytne naraz:
for predmet, hodnota in poklady.items():
print(predmet, hodnota)
Názvy premenných predmet a hodnota si volíme sami.
Operátor in zisťuje, či sa medzi kľúčmi nachádza zadaný kľúč:
print("Prsteň" in poklady) # True
print("Sekera" in poklady) # False
Ak chceme hľadať medzi hodnotami, musíme použiť poklady.values().
Odstraňovanie položiek
Príkaz del
Ak poznáme existujúci kľúč, položku odstránime príkazom del:
del poklady["Luk"]
Pri neexistujúcom kľúči del vyvolá chybu KeyError.
Metóda clear()
Metóda clear() odstráni všetky položky, ale samotný slovník zostane existovať:
poklady.clear()
print(poklady) # {}