Slovníky
Slovník je datová struktura,
která ukládá dvojice klíč -> hodnota.
Můžete si ho představit jako skutečný slovník:
podle slova najdete jeho význam.
V programování podle klíče najdeme hodnotu.
Například v Pythonu:
barvy = {
"led": "červená",
"tlacitko": "modrá",
"motor": "zelená",
}
print(barvy["led"])
Klíč je "led".
Hodnota je "červená".
Kdy se hodí
Slovník se hodí, když nechceme hledat podle pořadí, ale podle jména.
Pole říká:
dej mi prvek číslo 2
Slovník říká:
dej mi hodnotu pod klíčem "led"
To je užitečné třeba pro:
- konfiguraci programu,
- pojmenované hodnoty ze senzorů,
- převod příkazů na akce,
- počítání výskytů,
- ukládání stavů podle názvu.
Příklad konfigurace
config = {
"baudrate": 115200,
"port": "/dev/ttyUSB0",
"device": "attiny1626",
}
print(config["device"])
Takový zápis je čitelnější než pole, protože hned vidíme, co která hodnota znamená.
Pozor na neexistující klíč
Když se zeptáte na klíč, který ve slovníku není, program většinou skončí chybou.
print(config["rychlost_motoru"])
Pokud rychlost_motoru ve slovníku není,
Python zahlásí chybu.
Je to podobné jako hledat v papírovém slovníku slovo,
které tam nikdo nenapsal.
Někdy se proto používá bezpečnější čtení:
rychlost = config.get("rychlost_motoru", 0)
Když klíč existuje,
použije se jeho hodnota.
Když neexistuje,
použije se výchozí hodnota 0.
Slovníky a embedded
Na malých mikrokontrolérech jako ATtiny se slovníky v této podobě často nepoužívají. Mohly by zabrat víc paměti, než je příjemné.
Myšlenka slovníku je ale pořád užitečná. Například v programu na počítači můžete mít slovník příkazů, které posíláte do zařízení:
commands = {
"status": 0x02,
"stream": 0x03,
"filter": 0x04,
}
Na straně počítače je to pohodlné.
Na straně malého čipu se často použije úspornější zápis,
třeba switch, pole nebo jednoduchá tabulka.