Programowanie dynamiczne z słownikami
W programie chcesz wykonać różne obliczenia, takie jak łączna liczba księżyców. Ponadto w miarę przechodzenia do bardziej zaawansowanego programowania może się okazać, że ładujesz ten typ informacji z plików lub bazy danych, a nie kodujesz bezpośrednio w języku Python.
Aby ułatwić obsługę tych scenariuszy, język Python umożliwia traktowanie zarówno kluczy, jak i wartości w słowniku jako listy. Możesz dynamicznie określać klucze i wartości oraz wykonywać różne obliczenia.
Wyobraź sobie słownik przechowujący miesięczne ilości opadów. Prawdopodobnie masz klucze dla każdego miesiąca i skojarzone opady. Chcesz dodać łączne opady deszczu, a napisanie kodu w celu wykonania operacji przy użyciu każdego klucza byłoby raczej żmudne.
Pobieranie wszystkich kluczy i wartości
Metoda keys()
zwraca obiekt listy zawierający wszystkie klucze. Za pomocą tej metody można iterować wszystkie elementy w słowniku.
Wyobraź sobie, że masz następujący słownik, przechowując ostatnie trzy miesiące opadów.
rainfall = {
'october': 3.5,
'november': 4.2,
'december': 2.1
}
Załóżmy, że chcesz wyświetlić listę wszystkich opadów deszczu. Możesz wpisać nazwę każdego miesiąca, ale będzie to żmudne.
for key in rainfall.keys():
print(f'{key}: {rainfall[key]}cm')
october: 3.5cm
november: 4.2cm
december: 2.1cm
Uwaga
Nadal można używać nawiasów kwadratowych ([ ]
) z nazwą zmiennej, a nie literału ciągów zakodowanych na kodzie.
Określanie, czy klucz istnieje w słowniku
Po zaktualizowaniu wartości w słowniku język Python zastąpi istniejącą wartość lub utworzy nową, jeśli klucz nie istnieje. Jeśli chcesz dodać wartość zamiast zastępować ją, możesz sprawdzić, czy klucz istnieje przy użyciu polecenia in
. Jeśli na przykład chcesz dodać wartość do grudnia lub utworzyć nową, jeśli nie istnieje, możesz użyć następującego polecenia:
if 'december' in rainfall:
rainfall['december'] = rainfall['december'] + 1
else:
rainfall['december'] = 1
# Because december exists, the value will be 3.1
Pobieranie wszystkich wartości
Podobnie jak keys()
funkcja , values()
zwraca listę wszystkich wartości w słowniku bez odpowiednich kluczy. values()
Może być przydatne, gdy używasz klucza do celów etykietowania, takich jak w poprzednim przykładzie, w którym klucze są nazwą miesiąca. Możesz użyć values()
polecenia , aby określić łączną ilość opadów:
total_rainfall = 0
for value in rainfall.values():
total_rainfall = total_rainfall + value
print(f'There was {total_rainfall}cm in the last quarter.')
There was 10.8cm in the last quarter.