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.

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

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

Nebo se registrujte pomocí:

6/9