Programowanie dynamiczne z słownikami

Ukończone

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.