Janko a Marienka už majú plné batohy, no pri každom predmete si chcú zapamätať aj jeho hodnotu. Údaje si preto usporiadajú do slovníka — svojej kúzelnej knihy pokladov.

Čo sa naučíte

Po skončení kapitoly budete vedieť:

  • vytvoriť slovník;
  • bezpečne čítať a meniť jeho hodnoty;
  • prechádzať kľúče aj hodnoty;
  • ukladať do slovníka zložitejšie údaje.

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 zapíšte do zložených zátvoriek {}. Kľúč od hodnoty oddeľte dvojbodkou a položky čiarkou.

treasures = {
    "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(treasures))

Prístup k hodnote

Hodnotu získate pomocou kľúča v hranatých zátvorkách:

print(treasures["Meč"])

Výstup:

15

Kým pri zozname by ste použili napríklad index 0, pri slovníku použijete kľúč "Meč". Hodnoty v jednom slovníku môžu mať rôzne dátové typy:

student = {
    "name": "Marienka",
    "age": 15,
    "city": "Košice",
    "is_wizard": False,
}

print(student["city"])

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(treasures["Sekera"])

Ak chýbajúci kľúč nie je chybou programu, použite metódu get():

print(treasures.get("Sekera"))       # None
print(treasures.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:

treasures["Meč"] = 25

Ak kľúč ešte neexistuje, rovnakým zápisom vytvoríte novú položku:

treasures["Elixír"] = 5

Slovník teraz obsahuje štyri položky:

print(treasures)

Výstup:

{'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 item in treasures:
    print(item)

Tento cyklus prechádza všetky kľúče v slovníku. Rovnaký výsledok dostaneme s metódou keys():

for item in treasures.keys():
    print(item)

Ak potrebujete iba hodnoty, použite values():

for value in treasures.values():
    print(value)

Kľúč aj hodnotu získate naraz pomocou metódy items():

for item, value in treasures.items():
    print(item, value)

Názvy premenných item a value si môžete zvoliť sami.

Operátor in zisťuje, či sa medzi kľúčmi nachádza zadaný kľúč:

print("Prsteň" in treasures)  # True
print("Sekera" in treasures)  # False

Ak chcete hľadať medzi hodnotami, použite treasures.values().

Odstraňovanie položiek

Príkaz del

Ak poznáte existujúci kľúč, položku odstráňte príkazom del:

del treasures["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ť:

treasures.clear()
print(treasures)  # {}

Ďalšie spôsoby úpravy

Metóda update() pridá viacero položiek naraz. Metóda pop() položku odstráni a zároveň vráti jej hodnotu.

student = {"name": "Janko", "age": 20}
student.update({"city": "Košice", "age": 21})

old_age = student.pop("age")
print(old_age)  # 21
print(student)

Aj pop() môže dostať predvolenú hodnotu, ak kľúč nemusí existovať:

removed = student.pop("points", 0)

Vnorené údaje

Hodnotou môže byť ďalší slovník alebo zoznam. Takto môžete reprezentovať viac študentov naraz:

students = {
    "janko": {"age": 20, "courses": ["Python", "Databázy"]},
    "marienka": {"age": 21, "courses": ["Python"]},
}

print(students["janko"]["courses"][0])  # Python

Cvičenia

  1. Vytvorte slovník s tromi predmetmi a ich známkami.
  2. Vypočítajte priemer hodnôt zo slovníka pomocou values().
  3. Vypíšte iba študentov, ktorí majú známku lepšiu než zadaná hranica.
  4. Uložte pri každom študentovi zoznam predmetov a vypíšte počet jeho predmetov.

Zhrnutie

Janko a Marienka použili slovník ako kúzelnú knihu, ktorá spája jedinečné kľúče s hodnotami. Kľúče čítame pomocou [] alebo get(), položky prechádzame pomocou items() a údaje meníme priradením, metódami update() a pop() alebo príkazom del.

Previous Post Next Post

Slovníky: kúzelná kniha Janka a Marienky