Počítání pomocí slovníku
Slovníky se skvěle hodí k počítání. Řekněme, že třída hlasuje, kam pojede na školní výlet, a hlasy máte v seznamu:
hlasy = ["zoo", "hrad", "zoo", "aquapark", "zoo", "hrad"]Kolik hlasů dostalo které místo? Vytvořte slovník, ve kterém jsou klíči místa a hodnotami počty jejich hlasů. Začněte s prázdným slovníkem a procházejte hlasy jeden po druhém. Když už místo ve slovníku je, přičtěte k jeho počtu 1; když tam ještě není, přidejte ho s počtem 1:
hlasy = ["zoo", "hrad", "zoo", "aquapark", "zoo", "hrad"]
pocty = {}
for hlas in hlasy:
if hlas in pocty:
pocty[hlas] += 1
else:
pocty[hlas] = 1
print(pocty){'zoo': 3, 'hrad': 2, 'aquapark': 1}Proč ten if? U prvního hlasu ještě "zoo" ve slovníku pocty není. pocty[hlas] += 1 by nejdřív musel přečíst pocty["zoo"] a program by skončil chybou KeyError: 'zoo'.
S .get() můžete totéž napsat na jediný řádek. pocty.get(hlas, 0) vrátí, kolik hlasů má místo zatím, nebo 0, pokud ve slovníku ještě není. Přičtete k tomu 1 a výsledek uložíte pod stejný klíč:
hlasy = ["zoo", "hrad", "zoo", "aquapark", "zoo", "hrad"]
pocty = {}
for hlas in hlasy:
pocty[hlas] = pocty.get(hlas, 0) + 1
print(pocty){'zoo': 3, 'hrad': 2, 'aquapark': 1}Obě verze dělají totéž, použijte tu, které rozumíte líp. Tu kratší budete často vídat v kódu jiných programátorů.
Stejně to funguje se vším, co umíte projít cyklem for: se slovy v seznamu nebo s písmeny textu.
Jak psát:
Pokyny
Spočítejte, kolikrát se které písmeno objevuje v proměnné slovo. Vytvořte prázdný slovník pocty, projděte slovo cyklem for písmeno po písmenu a počítejte písmena jako v příkladu. Pak vypište pocty: {'a': 5, 'b': 2, 'r': 2, 'k': 1, 'd': 1}.
Pod to projděte pocty pomocí .items() a vypište písmena, která se objevují víc než jednou, každé se svým počtem, třeba a: 5.
Začněte programovat zdarma
6/9