96
Rozdział 3.
Klucz-wartość
Słownik przechowuje pary klucz-wartość
W przeciwieństwie do listy, która jest kolekcją związanych ze sobą obiektów, ze
słownika
korzysta się w celu przechowywania kolekcji
par klucz-wartość
, w przypadku której każdy
unikatowy
klucz ma odpowiadającą jej wartość. Słownik określa się często w informatyce
mianem
tablicy asocjacyjnej, a w innych językach programowania używa się jeszcze innych,
właściwych dla nich nazw (takich jak mapa, tablica mieszająca czy po prostu tabela).
W przypadku słownika w języku Python klucz jest zwykle łańcuchem znakowym, podczas
gdy powiązana z nim wartość może być dowolnym obiektem Pythona.
Dane, które pasują do modelu słownika, łatwo jest wskazać: składają się z
dwóch kolumn
,
które mogą zawierać
wiele wierszy
danych. Mając to na uwadze, spójrz raz jeszcze
na naszą „serwetkę z danymi”, z której korzystaliśmy pod koniec poprzedniego rozdziału.
Nazwisko: Ford Prefect
Płeć: mężczyzna
Zawód: badacz
Planeta macierzysta: Betelgeza Siedem
obiekt
obiekt
obiekt
obiekt
klucz nr 1
klucz nr 2
klucz nr 3
klucz nr 4
Słownik
Wygląda na to, że dane widniejące na tej serwetce doskonale nadają się do zapisania
w słowniku Pythona.
Powróćmy do powłoki, aby przekonać się, jak z tych danych zapisanych na serwetce utworzyć
słownik. Kuszące wydaje się wpisanie całego tego słownika w postaci jednego wiersza
kodu, jednak tego nie zrobimy. Ponieważ chcemy, aby nasz kod było łatwo czytać, celowo
wprowadzimy każdy wiersz danych (czyli każdą parę klucz-wartość) w osobnym wierszu.
Przyjrzyj się kodowi przedstawionemu poniżej.
Tu jest jedna
kolumna danych...
...a tu druga.
Na tej serwetce znajduje
się wiele wierszy danych
ułożonych w dwie kolumny.
W językach C++
i Java słownik znany jest
jako „mapa”, a w Perlu
i Rubym używa się dla
niego nazwy „tablica
mieszająca”.
>>> person3 = { ‘Nazwisko’: ‘Ford Prefect’,
‘Płeć’: ‘mężczyzna’,
‘Zawód’: ‘badacz’,
‘Planeta macierzysta’: ‘Betelgeza Siedem’ }
Nazwa słownika
(przypomnij sobie,
że pod koniec
poprzedniego
rozdziału
mieliśmy
do czynienia
ze zmiennymi
person1
i person2)
Klucz
Powiązana wartość danej
Klucz
Wartość
jesteś tutaj�
97
Dane strukturalne
obiekt
obiekt
obiekt
obiekt
klucz nr 1
klucz nr 2
klucz nr 3
klucz nr 4
Słownik
Spraw, aby słowniki łatwo się czytało
Bardzo kuszącą perspektywą może wydawać się wzięcie czterech wierszy kodu z końca
poprzedniej strony i wpisanie ich w powłoce w sposób przedstawiony poniżej.
>>> person3 = { ‘Nazwisko’: ‘Ford Prefect’,
‘Płeć’: ‘mężczyzna’, ‘Zawód’: ‘badacz’, ‘Planeta
macierzysta’: ‘Betelgeza Siedem’ }
Choć interpreter w ogóle nie dba o to, jak wprowadzasz dane, wpisanie ich w taki
sposób (a więc jako jeden długi wiersz) utrudnia czytanie kodu i dlatego powinieneś
unikać tego za wszelką cenę.
Gdy zaśmiecisz swój kod słownikami, które trudno będzie przeczytać, inni programiści
(a wśród nich
Ty sam za jakieś sześć miesięcy) będą przeklinali na czym świat stoi.
Dlatego warto poświęcić nieco czasu na odpowiednie wyrównanie kodu tworzącego
Twój słownik, aby
dało się go łatwo przeczytać.
Oto graficzna reprezentacja tego, jak słownik Pythona jest odwzorowywany w pamięci
po wykonaniu którejkolwiek z powyższych instrukcji.
person3
Płeć mężczyzna
Nazwisko
Ford Prefect
Planeta macierzysta Betelgeza Siedem
Zawód badacz
Klucze
Wartości
Zmienna person3 odwołuje się
do całego słownika, który tworzy
kolekcja par klucz-wartość.
Jak widać, jest to nieco bardziej skomplikowana struktura niż przypominająca tablicę
lista. Jeśli idea stojąca za pythonowym słownikiem jest dla Ciebie czymś nowym,
możesz ją traktować jak
tablicę wyszukiwania
(ang. lookup table). Klucz znajdujący się
po lewej stronie jest wykorzystywany do
wyszukiwania wartości po prawej (dokładnie
w taki sposób, z jakiego korzystasz, szukając słowa w papierowym słowniku).
Poświęćmy trochę czasu na bliższe poznanie słownika. Zaczniemy od dokładnego
wyjaśnienia, jak namierzyć słownik Pythona w swoim kodzie, a następnie przejdziemy
do omówienia jego unikatowych cech oraz możliwych zastosowań.
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.