Słowniki (dictionary)

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 11113 razy

Słowniki to tak zwane listy asocjacyjne, które cechują się tym, że nie są indeksowane tak jak listy tylko i wyłącznie kolejnymi liczbami całkowitymi, ale mogą być indeksowane liczbami zmiennoprzecinkowymi lub tekstem.

Tworzenie pustego słownika

Istnieje kilka sposobów na utworzenie pustego słownika, oto pierwszy z nich:

slownik = dict()

i drugi:

slownik = {}

Inicjalizacja słownika z elementami

Oto przykład utworzenia słownika z przypisaniem mu elementów:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} print(slownik)

Wynik działania:

{'Arek': 3000, 'Ania': 1200, 'Ola': 1300}

Warto zauważyć, że elementy zostały wyświetlone w zupełnie innej kolejności niż zostały dodane do słownika.

Tworzenie słownika z dwóch list

Oto przykład utworzenia słownika z wykorzystaniem dwóch list i funkcji zip:

imiona = ["Ania", "Ola", "Arek"] zarobki = [1200, 1300, 3000] slownik = dict(zip(imiona, zarobki)) print(slownik)

Wynik działania:

{'Arek': 3000, 'Ola': 1300, 'Ania': 1200}

Odwoływanie się do pojedynczego elementu słownika

Poprzez klucz:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} print(slowanik["Ania"])

Wynik działania:

1200

Za pomocą metody wewnętrznej get:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} print(slownik.get("Ania")) print(slownik.get("Damian")) print(slownik.get("Damian","brak wpisu"))

Wynik działania:

1200
None
brak wpisu

Iterowanie po słowniku

Słowniki są jak najbardziej iterowalne, a więc można zrobić coś takiego:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} for i in slownik: print(i)

Wynik działania:

Arek
Ola
Ania

Jak widać, w trakcie iterowania dobraliśmy się do indeksów słownika, natomiast nie uzyskaliśmy informacji o zawartości, która się tam znajduje. Tę zawartość można uzyskać w dwojaki sposób:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} for i in slownik: print("{i}:{value}".format(i=i,value = slownik[i]))

Wynik działania:

Arek:3000
Ola:1300
Ania:1200

Choć powyższy kod działa poprawnie, to każdy szanujący się pythonauta powie: tak się nie robi! Więc zróbmy to tak, jak się to robi, czyli:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} for key, value in slownik.items(): print("{key}:{value}".format(key = key, value = value))

Wynik będzie taki sam co poprzednio.

Uaktualnianie danych w słowniku za pomocą metody wewnętrznej update

Metoda update wstawia dodatkowe wpisy do słownika a jeżeli dany klucz wpisu istnieje, to uaktualnia zawartość tego wpisu.

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} slownik.update({"Ania":2000,"Damian":4500}) print(slownik)

Wynik działania:

{'Arek': 3000, 'Ania': 2000, 'Ola': 1300, 'Damian': 4500}

Dodawanie wpisu, gdy ten nie występuje w słowniku za pomocą metody wewnętrznej setdefault.

Oto jak można dodać element do słownika, gdy ten nie występuje:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} slownik.setdefault("Arek",3300) print(slownik) slownik.setdefault("Damian",4500) print(slownik)

Wynik działania:

{'Arek': 3000, 'Ania': 2000, 'Ola': 1300}
{'Arek': 3000, 'Ania': 2000, 'Ola': 1300, 'Damian': 4500}

Sprawdzanie, czy podany klucz istnieje w słowniku za pomocą in.

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} if "Ania" in slownik: print("Ania jest w słowniku!") else: print("Ani nie ma w słowniku!")

Wynik działania:

Ania jest w słowniku!

Sprawdzanie, czy podany klucz i wartość istnieje w słowniku za pomocą in.

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} if ("Ania", 1200) in slownik.items(): print("Tak Ania zarabia 1200 $!") else: print("Ani nie ma w słowniku, albo nie zarabia 1200 $!")

Wynik działania:

Tak Ania zarabia 1200 $!

Sprawdzanie, czy dana wartość istnieje w słowniku za pomocą in.

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} if 1200 in slownik.values(): print("Tak, ktoś tu zarabia 1200 $!") else: print("Nikt tu nie zarabia 1200 $!")

Wynik działania:

Tak, ktoś tu zarabia 1200 $!

Usuwanie elementu słownika.

Za pomocą metody wewnętrznej pop można usunąć wpis w słowniku o podanym kluczu z jednoczesnym zwróceniem samej wartości kryjącej się pod tymże kluczem:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} if "Ania" in slownik: print(slownik.pop("Ania")) print(slownik) else: print("Nie ma takiego klucza w słowniku")

Wynik działania:

1200
{'Arek': 3000, 'Ola': 1300}

Za pomocą metody wewnętrznej popitem można usunąć ostatni wpis słownika z jednoczesnym zwróceniem klucza i wartości w postaci krotki:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} if "Ania" in slownik: print(slownik.popitem()) print(slownik) else: print("Nie ma takiego klucza w słowniku")

Wynik działania:

('Arek', 3000)
{'Ania': 1200, 'Ola': 1300}

Czyszczenie słownika za pomocą metody wewnętrznej clear:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} slownik.clear() print(slownik)

Wynik działania:

{}

Tworzenie kopii słownika za pomocą metody wewnętrznej copy:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} slownik2 = slownik.copy() slownik3 = slownik slownik.clear() print(slownik) print(slownik3) print(slownik2)

Wynik działania:

{}
{}
{'Arek': 3000, 'Ania': 1200, 'Ola': 1300}

Liczba elementów znajdujących się w słowniku:

Sposób pierwszy za pomocą funkcji len:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} print(len(slownik))

Wynik działania:

3

Drugi sposób, za pomocą wewnętrznej metody __len__:

slownik = {"Ania":1200, "Ola":1300, "Arek":3000} print(slownik.__len__())
Propozycje książek