Procházení slovníku
Cyklem for můžete procházet i slovník. Při každém průchodu dostane proměnná cyklu jeden klíč, a to v pořadí, v jakém byly dvojice přidány. Hodnotu, která k němu patří, přečtete hranatými závorkami s klíčem v proměnné, stejně jako v předchozím cvičení:
hlavni_mesta = {"Česko": "Praha", "Slovensko": "Bratislava", "Rakousko": "Vídeň"}
for zeme in hlavni_mesta:
print(zeme, "-", hlavni_mesta[zeme])Česko - Praha
Slovensko - Bratislava
Rakousko - VídeňPři prvním průchodu je v proměnné zeme text "Česko", takže hlavni_mesta[zeme] je "Praha". Při druhém průchodu je v ní "Slovensko" a tak dále.
Když potřebujete klíč i hodnotu, máte k dispozici šikovnější způsob: metodu .items() (položky). Ta dává cyklu dvojice ze slovníku, jednu po druhé, a za for napíšete dvě proměnné oddělené čárkou. První dostane klíč, druhá hodnotu:
hlavni_mesta = {"Česko": "Praha", "Slovensko": "Bratislava", "Rakousko": "Vídeň"}
for zeme, mesto in hlavni_mesta.items():
print(f"{zeme} má hlavní město {mesto}.")Česko má hlavní město Praha.
Slovensko má hlavní město Bratislava.
Rakousko má hlavní město Vídeň.Názvy obou proměnných si vybíráte sami. Volte takové, které říkají, co v nich je: for zeme, mesto in ... řekne víc než for klic, hodnota in ....
Vzory z lekce o cyklech fungují i tady. Když jsou hodnotami čísla, můžete je sečíst nebo pomocí if vybrat jen některé dvojice:
sklad = {"jablka": 12, "citrony": 0, "hrušky": 5}
celkem = 0
for ovoce, pocet in sklad.items():
celkem += pocet
if pocet == 0:
print("Vyprodáno:", ovoce)
print("Celkem kusů:", celkem)Vyprodáno: citrony
Celkem kusů: 17Typická chyba je zapomenout na .items(): for zeme, mesto in hlavni_mesta:. Cyklus pak dostává jen klíče a Python se snaží rozdělit každý klíč, třeba text "Česko", do dvou proměnných, do každé jedno písmeno. Písmen je ale moc, a tak program skončí chybou ValueError: too many values to unpack (expected 2) (příliš mnoho hodnot k rozdělení, očekávány 2).
Jak psát:
Pokyny
Napište cyklus for s .items(), který projde slovník body a u každého hráče vypíše jeho jméno a body oddělené dvojtečkou, třeba Anna: 12.
Pod něj ve druhém cyklu vypište jména hráčů, kteří mají aspoň 10 bodů, každé na samostatný řádek.
Začněte programovat zdarma
5/9