Co je slovník?

Zatím měla každá proměnná jednu hodnotu, třeba číslo nebo text, nebo seznam hodnot stejného druhu, například jmen vašich kamarádů. V této lekci poznáte slovníky. Slovník drží pohromadě několik hodnot, které popisují jednu věc, a každou z nich pojmenuje.

Představte si, že chcete mít v programu pár údajů o nějakém člověku: jméno, věk a město. Mohli byste je uložit do samostatných proměnných:

jmeno = "Anna"
vek = 21
mesto = "Brno"

Pro jednoho člověka to funguje, ale pro deset lidí byste potřebovali třicet proměnných a z kódu by nebylo poznat, které k sobě patří. Hodnoty byste mohli dát také do seznamu:

osoba = ["Anna", 21, "Brno"]

Teď jsou pohromadě, ale musíte si pamatovat, že na indexu 0 je jméno a na indexu 2 město. A co je osoba[1]? To z kódu nevyčtete.

Slovník řeší oba problémy. Drží hodnoty pohromadě a každou z nich pojmenuje:

osoba = {"jmeno": "Anna", "vek": 21, "mesto": "Brno"}

Slovník se píše do složených závorek { }. Uvnitř jsou dvojice klíč–hodnota oddělené čárkami. Klíč je název hodnoty: "jmeno", "vek", "mesto". Obvykle je to text, a proto je v uvozovkách. Za klíčem následuje dvojtečka a za ní hodnota. Ta může být cokoli, co znáte: text, číslo, True nebo False, dokonce i seznam.

Klíč je text, takže by mohl obsahovat i diakritiku. Klíče, které pojmenovávají údaje, jako "jmeno" nebo "vek", ale budeme psát bez ní, stejně jako názvy proměnných. Když je klíčem skutečné slovo, třeba název jídla v menu, diakritiku mít může: "káva".

Proč „slovník“? Funguje podobně jako opravdový slovník: vyhledáte v něm slovo (klíč) a najdete u něj, co znamená (hodnotu).

Delší slovník se lépe čte, když je každá dvojice na vlastním řádku. Oba zápisy znamenají totéž. Když slovník vypíšete, Python ho ukáže na jednom řádku a text v něm dá do jednoduchých uvozovek, stejně jako u seznamů. Dvojice zůstanou v pořadí, v jakém jste je zapsali:

osoba = {
    "jmeno": "Anna",
    "vek": 21,
    "mesto": "Brno"
}
print(osoba)
{'jmeno': 'Anna', 'vek': 21, 'mesto': 'Brno'}

Slovník nespojujte s textem pomocí +. Nejde to, stejně jako to nejde s číslem: "Osoba: " + osoba skončí chybou TypeError: can only concatenate str (not "dict") to str (text jde spojit jen s textem, ne se slovníkem). Oddělte je raději čárkou, print("Osoba:", osoba), nebo použijte f-řetězec.

Typické chyby při psaní slovníku:

  • Chybějící čárka mezi dvěma dvojicemi: {"jmeno": "Anna", "vek": 21 "mesto": "Brno"} skončí chybou SyntaxError: invalid syntax. Perhaps you forgot a comma? (neplatný zápis, nezapomněli jste na čárku?).
  • Klíč bez uvozovek: {jmeno: "Anna"}. Python si myslí, že jmeno je proměnná, a program skončí chybou NameError: name 'jmeno' is not defined.
  • = místo dvojtečky: {"jmeno" = "Anna"} skončí chybou SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='? Hláška vám moc nepomůže (== jste přece také nechtěli), a tak si ji zapamatujte: když ji uvidíte, hledejte = uvnitř složených závorek.

Pokyny

Smažte tři proměnné i print(). Místo nich vytvořte proměnnou zvire se slovníkem, který má tyto dvojice v tomto pořadí: "jmeno" s hodnotou "Rex", "druh" s hodnotou "pes", "vek" s hodnotou 3 a "ockovany" s hodnotou True. Vypište ho pomocí print(zvire). Ve výpisu by se mělo objevit {'jmeno': 'Rex', 'druh': 'pes', 'vek': 3, 'ockovany': True}.

Pod to vypište slovník ještě jednou, tentokrát s popiskem Zvíře: na začátku. Nový řádek by měl být Zvíře: {'jmeno': 'Rex', 'druh': 'pes', 'vek': 3, 'ockovany': True}.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

1/9