Kódím.cz
4

Další datové struktury

N-tice, množiny a slovníky jsou nový typ kolekcí, které umožňují ukládat více dat.

Slovníky a cykly

Na kurzu Úvod do programování v Pythonu jsme si ukázali, že pro práci se sekvencemi jsou ideální cykly. Vyzkoušíme si nyní, jak se slovníky pracovat pomocí cyklů.

Abychom si ukázali průchod slovníkem pomocí cyklu, použijeme slovník s údaji o prodejích knih z cvičení z minulé kapitoly. Ve slovníku tedy máme následující data:

sales = {
    "Zkus mě chytit": 4165,
    "Vrah zavolá v deset": 5681,
    "Zločinný steh": 2565,
}

Data si můžeme představit jako tabulku, kde klíče tvoří názvy knih a hodnota čísla s počtem prodaných kusů.

key value
Zkus mě chytit 4165
Vrah zavolá v deset 5681
Zločinný steh 2565

Zkusme si nejprve vypsat názvy všech knih ve slovníku (bez počtu prodaných kusů). K tomu použijeme cyklus for, který již známe. Pomocnou proměnnou si pojmenujeme klic. Tato proměnná funguje podobně jako u seznamu - postupně se do ní vloží hodnoty jednotlivých klíčů slovníku.

for key in sales:
    print(key)

Zkusme nyní informaci o každém prodeji vypsat pomocí věty, do které vložíme název knihy a počet prodaných kusů. Oproti předchozímu příkladu je tu změna. Každá položka slovníku se skládá z klíče a hodnoty. V cyklu můžeme použít oboje (a často i používáme). Využijeme tedy dvě proměnné, které oddělíme čárkou. Do první proměnné je uložený klíč a do druhé hodnota.

Všimni si též, že za slovník vkládáme .items(). To je důležité, protože bez metody .items() bychom získali pouze klíče.

for key, value in sales.items():
    print(f"Knihy {key} bylo prodáno {value} výtisků.")

Zkusme si nyní spočítat celkový počet prodaných kusů. Vytvoříme si tedy proměnnou total_sales a pro každou knihu do ní přičteme počet prodaných kusů.

total_sales = 0

for key, value in sales.items():
    print(f"Knihy {key} bylo prodáno {value} výtisků.")
    total_sales = total_sales + value

print(f"Celkem bylo prodáno {total_sales} výtisků.")

Vedle metody .items() existuje i metoda .values(), která vrátí hodnoty ze slovníku jako seznam. Tím si můžeme výpočet součtu zjednodušit.

sales_values = sales.values()
total_sales = sum(sales_values)
print(total_sales)