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ů: 17

Typická 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).

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

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

Nebo se registrujte pomocí:

5/9