Pętla po słowniku i program, który liczy powtórzenia
Rozgrzewka · 3 minuty
Co pamiętacie z lekcji 13?
Co robi słowo import na początku programu?
Co wypisze print(math.sqrt(16))?
Czym różni się random.randint(1, 6) od random.choice?
Część 1 · Po co słownik
Lista pamięta kolejność, słownik pamięta nazwy
W liście każdą wartość znajdujecie po numerze, czyli indeksie. W słowniku znajdujecie ją po kluczu, czyli po nazwie, którą sami wymyślacie. Słownik to zbiór par klucz: wartość, a klucze w jednym słowniku nie mogą się powtarzać.
Zapisy grades[1] i grades["Jan"] dają tę samą piątkę, ale tylko drugi zapis mówi, czyja ona jest.
docs.python.org, The Python Tutorial, rozdz. 5.5 (Dictionaries)
Metoda items oddaje pary, dlatego po for stoją dwie nazwy naraz: pierwsza bierze klucz, druga wartość.
docs.python.org, The Python Tutorial, rozdz. 5.6 (Looping Techniques)
Część 3 · Licznik powtórzeń
Sześć wyrazów, trzy liczniki
words = ["kot", "pies", "kot",
"mysz", "kot", "pies"]
counter = {}
for word in words:
counter[word] = counter.get(word, 0) + 1
print(counter)
{'kot': 3, 'pies': 2,
'mysz': 1}
Klucz to wyraz, wartość to liczba jego wystąpień.
get(word, 0) daje dotychczasowy licznik, a przy pierwszym spotkaniu zero.
docs.python.org, The Python Tutorial, rozdz. 5.5 (Dictionaries)
Ćwiczenie · przy komputerze · 12 minut
Ćwiczenie: stolice i oceny
Utwórz słownik capitals z trzema krajami i ich stolicami. Wypisz stolicę Polski, dodaj parę Francja i Paryż, na końcu wypisz liczbę par.
Sprawdź operatorem in, czy w słowniku są Czechy. Potem spróbuj odczytać Hiszpanię przez get: raz bez drugiego argumentu, raz z napisem „nie znam”.
Dla listy grades = [5, 4, 5, 3, 4, 5] policz słownikiem, ile razy pojawiła się każda ocena. Wypisz wynik pętlą po items w postaci „Ocena 5 wystąpiła 3 razy”.
Jak sprawdzić, czy wynik jest dobry
Sumy z zadania 3 muszą dać 6, bo tyle ocen jest na liście. Gdy w zadaniu 1 wyjdzie KeyError, sprawdź pisownię klucza: "Polska" i "polska" to dwa różne klucze.
Sprawdzenie
Trzy pytania na koniec
Czym różni się szukanie wartości w liście od szukania w słowniku?
Klucza "ser" nie ma w słowniku. Co zrobi prices["ser"], a co prices.get("ser")?
Po co w pętli używa się items, skoro for działa też bez tego?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Para klucz i wartość
Dane z formularza na stronie lecą do programu jako pary: pole „email” i to, co ktoś wpisał
codziennie
counter.get(word, 0) + 1
Zliczanie, ile razy otwarto każdą podstronę sklepu w ciągu doby
codziennie
get z wartością zastępczą
Ustawienia użytkownika: gdy ktoś nigdy nie wybrał języka, program bierze wartość domyślną zamiast się wywalić
standard w firmach
Słownik jako całość
Format JSON, którym strony i aplikacje wymieniają dane przez internet, to dokładnie pary klucz i wartość