Slovníky v Pythonu jsou jednou z nejvšestrannějších a nejpoužívanějších datových struktur. Fungují na principu párování klíčů a hodnot, podobně jako slovník v reálném světě, kde ke slovu (klíči) přiřazujeme jeho význam (hodnotu). V programování jsou slovníky ideální pro situace, kdy potřebujeme rychle vyhledávat data na základě unikátního identifikátoru – klíče. Tato lekce nás provede vším, co potřebujeme vědět o slovnících, od jejich vytvoření přes manipulaci až po praktické využití.
Slovníky v Pythonu mají několik klíčových vlastností, které je odlišují od jiných datových struktur, jako jsou seznamy nebo n-tice:
Slovník můžeme vytvořit několika způsoby. Nejčastěji se používají složené závorky {}, kde klíče a
hodnoty jsou odděleny dvojtečkou : a jednotlivé páry čárkou ,. Podívejme se na
příklady:
# Prázdný slovník
prazdny_slovnik = {}
# Slovník s několika položkami
ovocny_slovnik = {"jablko": "červené", "hruška": "zelená", "banán": "žlutý"}
# Slovník s různými typy dat
mix_slovnik = {
"jmeno": "Karel", # řetězec
"vek": 25, # číslo
"hobby": ["čtení", "sport"], # seznam
"aktivni": True # boolean
}
Další způsob vytvoření slovníku je pomocí funkce dict():
auto = dict(znacka="Škoda", model="Octavia", rok=2020)
Poznámka: Při použití dict() nemusíte psát dvojtečky, ale klíče nesmí obsahovat mezery ani
speciální znaky.
K hodnotám ve slovníku přistupujete pomocí jejich klíčů, nikoli pomocí indexů jako u seznamů. Klíč zadáváte do
hranatých závorek []. Pokud klíč neexistuje, Python vyvolá výjimku KeyError.
auto = {"znacka": "Škoda", "model": "Octavia", "rok": 2020}
print(auto["znacka"]) # Výstup: Škoda
print(auto["rok"]) # Výstup: 2020
Alternativně můžeme použít metodu .get(), která nevyvolá chybu, pokud klíč neexistuje, ale vrátí
None (nebo hodnotu, kterou specifikujete):
print(auto.get("barva")) # Výstup: None
print(auto.get("barva", "není")) # Výstup: není
Slovníky jsou velmi flexibilní a nabízejí řadu operací pro práci s daty. Pojďme si je podrobně projít.
Nový pár klíč-hodnota přidáme jednoduše přiřazením hodnoty k novému klíči:
auto = {"znacka": "Škoda", "model": "Octavia"}
auto["barva"] = "červená"
print(auto) # Výstup: {'znacka': 'Škoda', 'model': 'Octavia', 'barva': 'červená'}
Pokud klíč již existuje, přiřazením nové hodnoty přepíšeme tu původní:
auto["model"] = "Fabia"
print(auto) # Výstup: {'znacka': 'Škoda', 'model': 'Fabia', 'barva': 'červená'}
Položku odstraníme pomocí klíčového slova del nebo metody .pop():
# Pomocí del
del auto["barva"]
print(auto) # Výstup: {'znacka': 'Škoda', 'model': 'Fabia'}
# Pomocí pop
model = auto.pop("model")
print(model) # Výstup: Fabia
print(auto) # Výstup: {'znacka': 'Škoda'}
Metoda .pop() navíc vrací hodnotu odstraněného klíče, což může být užitečné.
Pokud chceme slovník úplně vyprázdnit, použijme metodu .clear():
auto.clear()
print(auto) # Výstup: {}
Slovníky můžeme procházet různými způsoby – podle klíčů, hodnot nebo párů klíč-hodnota.
auto = {"znacka": "Škoda", "model": "Octavia", "rok": 2020}
for klic in auto.keys():
print(klic)
# Výstup:
# znacka
# model
# rok
Poznámka: Metoda .keys() není nutná, pokud procházíme slovník přímo, protože Python automaticky
iteruje přes klíče:
for klic in auto:
print(klic) # Stejný výsledek jako výše
for hodnota in auto.values():
print(hodnota)
# Výstup:
# Škoda
# Octavia
# 2020
Metoda .items() vrací dvojice (klíč, hodnota):
for klic, hodnota in auto.items():
print(f"{klic}: {hodnota}")
# Výstup:
# znacka: Škoda
# model: Octavia
# rok: 2020
Slovníky mohou obsahovat další slovníky, což je užitečné pro komplexní data:
uzivatel = {
"osobni": {"jmeno": "Jan", "vek": 30},
"kontakt": {"email": "jan@priklad.cz", "telefon": "123456789"}
}
print(uzivatel["osobni"]["jmeno"]) # Výstup: Jan
print(uzivatel["kontakt"]["email"]) # Výstup: jan@priklad.cz
Slovníky mají široké uplatnění. Zde je několik příkladů:
profil = {"jmeno": "Anna", "vek": 28, "mesto": "Brno", "zajmy": ["hudba", "cestování"]}
nastaveni = {"tema": "tmavé", "jazyk": "čeština", "hlasitost": 75}
preklad = {"pes": "dog", "kočka": "cat", "pták": "bird"}
Nyní, když máme pevné teoretické základy, je čas si vše vyzkoušet v praxi. Níže najdeme odkazy na procvičování a kvíz, které nám pomohou upevnit znalosti.