Výuka IT

Slovníky

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í.

Základní vlastnosti slovníků

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:

Vytvoření slovníku

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.

Přístup k hodnotám ve slovníku

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í
      

Manipulace se slovníky

Slovníky jsou velmi flexibilní a nabízejí řadu operací pro práci s daty. Pojďme si je podrobně projít.

Přidání nové položky

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á'}
      

Změna existující hodnoty

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á'}
      

Odstranění položky

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é.

Vymazání celého slovníku

Pokud chceme slovník úplně vyprázdnit, použijme metodu .clear():


auto.clear()
print(auto)  # Výstup: {}
      

Procházení slovníku

Slovníky můžeme procházet různými způsoby – podle klíčů, hodnot nebo párů klíč-hodnota.

Pouze klíče


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
      

Pouze hodnoty


for hodnota in auto.values():
    print(hodnota)
# Výstup:
# Škoda
# Octavia
# 2020
      

Klíče i hodnoty

Metoda .items() vrací dvojice (klíč, hodnota):


for klic, hodnota in auto.items():
    print(f"{klic}: {hodnota}")
# Výstup:
# znacka: Škoda
# model: Octavia
# rok: 2020
      

Vnořené slovníky

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
      

Výhody a nevýhody slovníků

Výhody

Nevýhody

Praktické využití slovníků

Slovníky mají široké uplatnění. Zde je několik příkladů:

Procvičování

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.