Chcesz nauczyć się pracować ze słownikami Pythona? W tym samouczku zostaną omówione metody słownikowe języka Python umożliwiające odczytywanie, modyfikowanie i wykonywanie innych typowych operacji na słownikach języka Python.
Zaczniemy od przeglądu podstaw słowników Pythona, a następnie utworzymy przykładowy słownik i zmodyfikujemy go przy użyciu metod słownikowych Pythona.
Zacznijmy…
Spis treści:
Przegląd słowników Pythona
Słowniki to wbudowane struktury danych w Pythonie. Pozwala przechowywać elementy w parach klucz-wartość — definiując powiązanie lub odwzorowanie między kluczami i wartościami.
Klucze w słowniku powinny być unikalne (aby można je było haszować). Możesz użyć klawisza, aby wyszukać wartość lub skorzystać z wbudowanych metod (za chwilę się ich nauczysz).
Podczas tworzenia słownika Pythona można zainicjować wszystkie pary klucz-wartość lub zainicjować pusty słownik, a następnie dodać pary klucz-wartość.
>>> dict1 = {'language':'Python','like':True} >>> type(dict1) <class 'dict'> # or we can do the following: >>> dict1 = {} >>> dict1['language']='Python' >>> dict1['like']=True
Metody słownikowe Pythona dla typowych operacji
Uwaga: Aby postępować zgodnie z przykładami kodu, musisz mieć zainstalowaną wersję Pythona 3.7 lub nowszą.
Możesz kodować razem w Pythonie REPL. Lub śledź w internetowym edytorze Pythona newsblog.pl.
>>> person = {'name':'Alice', ... 'city':'Portland', ... 'interest':'Programming', ... 'profession':'Developer' ... }
Teraz, gdy zainicjowaliśmy słownik Pythona, zacznijmy przeglądać różne metody słownikowe.
Uzyskaj klucze słownika za pomocą keys()
Jedną z typowych operacji podczas pracy ze słownikiem Pythona jest dostęp do wszystkich kluczy, wartości i par klucz-wartość. Aby uzyskać klucze słownika, możesz wywołać metodę keys(), jak pokazano:
>>> person.keys() dict_keys(['name', 'city', 'interest', 'profession'])
Uzyskaj wartości słownika za pomocą values()
Metoda values() zwraca wszystkie wartości i jest przydatna, gdy chcesz dalej przetwarzać te wartości.
Uzyskajmy dostęp do wszystkich wartości w słowniku osób:
>>> person.values() dict_values(['Alice', 'Portland', 'Programming', 'Developer'])
Uzyskaj pary klucz-wartość za pomocą items()
Metoda items() zwraca listę krotek par klucz-wartość. Dlatego wywołanie tej metody w słowniku osób zwraca listę krotek klucz-wartość:
>>> person.items() dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), ('profession', 'Developer')])
Uzyskaj płytką kopię za pomocą funkcji copy()
Metoda copy() zwraca skróconą kopię słownika Pythona.
>>> person_cpy = person.copy()
Tutaj person_cpy to płytka kopia słownika osób. Zmodyfikujmy tę kopię, aktualizując klucz „nazwa” do „Bob”.
>>> person_cpy['name'] = 'Bob' >>> person_cpy
Teraz, jeśli przejrzysz zawartość słownika, zobaczysz, że „imię” zostało zaktualizowane do „Bob”.
{ 'name': 'Bob', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Jednak oryginalny słownik osób nie został zmodyfikowany.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Ustaw wartości domyślne za pomocą setdefault()
Podczas pracy ze słownikami Pythona często pojawia się wyjątek KeyError, jeśli klucza nie ma w słowniku. Oto przykład, gdy próbujemy uzyskać dostęp do klucza „wiek”:
>>> person['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Możesz uniknąć takich błędów, używając wbudowanych metod setdefault() i get() zamiast uzyskiwać dostęp do wartości jak powyżej.
Metoda setdefault(key) zwraca dict[‘key’] jeśli klucz jest obecny w dyktacie.
>>> person.setdefault('name') 'Alice'
Gdy klucz nie jest obecny, dodaje klucz do słownika z domyślną wartością Brak.
>>> person.setdefault('address') >>> person
W tym przypadku klucz „adres” nie występuje w słowniku osób. Ale widzimy, że został dodany z domyślną wartością Brak.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': None }
Możemy teraz ustawić klucz „adres” na jakiś adres:
>>> person['address'] = "10, xyz street"
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street' }
Możesz także określić wartość w wywołaniu metody, jak pokazano:
>>> person.setdefault('country','USA') 'USA' >>> person
Ponieważ klucz „kraj” nie jest pierwotnie obecny w słowniku osób, widzimy, że został dodany z wartością „USA”.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Uzyskaj określoną wartość za pomocą funkcji get()
Metoda get() zwraca wartość odpowiadającą kluczowi. Opcjonalnie przyjmuje również inną wartość domyślną, która jest zwracana, jeśli klucz nie zostanie znaleziony w słowniku.
Kiedy próbujemy uzyskać dostęp do wartości klucza „nazwa”, otrzymujemy „Alice”, ponieważ klucz jest obecny osobiście:
>>> person.get('name') 'Alice'
Słownik osób nie ma klucza „gpa”. Więc kiedy próbujemy uzyskać jego wartość, nic nie otrzymujemy w Pythonie REPL. Jeśli jednak wydrukujesz wartość, otrzymasz Brak.
>>> person.get('gpa') >>> print(person.get('gpa')) None
Ale jeśli podasz opcjonalną wartość domyślną, otrzymamy tę wartość zamiast Brak.
>>> person.get('gpa','not found') 'not found'
Jednak metoda get() nie dodaje klucza „gpa” do słownika.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Zrozumienie setdefault() a get()
Chociaż do obsługi KeyError można używać zarówno metod setdefault(), jak i get(), podsumujmy różnice w stosunku do tego, czego się nauczyliśmy:
- dict.setdefault(key,val) dodaje klucz z wartością domyślną val. Jeśli val nie zostanie podany, klucz zostanie dodany z wartością domyślną None.
- dict.get(key,val) zwraca wartość odpowiadającą kluczowi ze słownika Pythona. Jeśli klucza nie ma, zwraca val (jeśli jest podany) lub None — ale nie dodaje klucza do słownika.
Możesz także użyć defaultdict w Pythonie, aby lepiej obsługiwać KeyErrors.
Zaktualizuj zawartość słownika za pomocą funkcji update()
Możesz zaktualizować istniejący słownik Pythona, używając par klucz-wartość z innego słownika. Możesz także zaktualizować zawartość dowolnej iterowalnej wersji Pythona za pomocą metody update() .
Zdefiniujmy słownik more_details. Następnie aktualizujemy słownik osób o zawartość ze słownika more_details:
>>> more_details = {'hobby':'singing', 'likes':'sweets'} >>> person.update(more_details)
Na podstawie poniższych danych wyjściowych widzimy, że klucze „hobby” i „lubię to” zostały dodane do słownika osób.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing', 'likes': 'sweets' }
Usuń ostatnio dodany element za pomocą popitem()
Metoda słownikowa popitem() może służyć do usuwania ostatnio dodanej pary klucz-wartość.
>>> person.popitem() ('likes', 'sweets')
Jak widać, wywołanie metody popitem() na słowniku osób zwraca parę klucz-wartość („polubienia”, „słodycze”) — ostatni element dodany do słownika.
Usuwa również parę klucz-wartość. Możesz to potwierdzić, przeglądając zawartość słownika:
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing' }
Usuń element słownika za pomocą pop()
Wiemy, że metoda słownikowa popitem() usuwa i zwraca ostatnią parę klucz-wartość w słowniku Pythona. Jednak czasami może być konieczne usunięcie innych elementów — poza ostatnio dodaną parą klucz-wartość.
Aby to zrobić, możemy użyć metody słownikowej Pythona pop(): użycie .pop(key) w słowniku zwraca wartość odpowiadającą kluczowi, a także usuwa parę klucz-wartość ze słownika.
Oto przykład:
>>> person.pop('hobby') 'singing'
Po wybraniu elementu odpowiadającego kluczowi „hobby” zauważyliśmy, że nie ma go już w słowniku.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Jeśli przekażemy klucz, który nie istnieje, napotkamy wyjątek KeyError, jak pokazano:
>>> person.pop('age') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Tutaj napotykamy wyjątek KeyError, ponieważ klucz „wiek” nie występuje w słowniku osób.
W przeciwieństwie do metody list pop(), która domyślnie usuwa ostatni element, metoda słownikowa pop() wymaga klucza. Jeśli nie określisz klucza w metodzie, wystąpią błędy.
>>> person.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Usuń wszystkie elementy słownika za pomocą clear()
Metody słownikowe pop() i popitem() usuwają po jednej parze klucz-wartość naraz. Jeśli chcesz usunąć wszystkie elementy ze słownika, możesz użyć metody clear().
>>> person.clear() >>> person {}
Jak widać, wywołanie metody clear() ze słownika osób usuwa wszystkie pary klucz-wartość, a słownik osób jest teraz pusty.
Podsumowanie metod słownikowych Pythona
Oto krótki przegląd metod słownikowych Pythona, których się nauczyliśmy.
MethodSyntaxDescriptionkeys()dict1.keys()Zwraca klucze dict1values()dict1.values()Zwraca wartości dict1items()dict1.items()Zwraca listę wszystkich par klucz-wartość w dict1copy()dict1.copy() Zwraca uproszczoną kopię dict1setdefault()dict1.setdefault(key, default_value) – Dodaje klucz z opcjonalną wartością domyślną jako klucz do dict1 (jeśli nie określono, domyślną wartością jest None)
– Zwraca dict1[key] jeśli klucz jest już obecny get()dict1.get(key,default_value)– Zwraca dict1[key] jeśli klucz jest obecny w dict1; W przeciwnym razie zwraca wartość_domyślną
– Jeśli klucz nie występuje w dict1 i nie określono default_value, zwraca Noneupdate()dict1.update(iterable1)Aktualizuje dict1 parami klucz-wartość z iterable1popitem()dict1.popitem()Usuwa i zwraca ostatnią parę klucz-wartość z dict1pop()dict1.pop(key) – Usuwa i zwraca wartość odpowiadającą kluczowi: dict1[key]
– Podnosi KeyError, jeśli klucza nie ma w dict1clear()dict1.clear() Usuwa wszystkie pozycje z dict1
Wniosek
Nauczyłeś się, jak używać typowych metod do wykonywania operacji odczytu, aktualizacji i usuwania w słownikach Pythona. Ponadto nauczyłeś się również, w jaki sposób metody get() i setdefault() mogą być używane do obsługi wyjątków KeyError poprzez odpowiednio zwrócenie wartości domyślnej i dodanie wpisu z wartością domyślną do słownika Pythona. Możesz także sortować słownik Pythona według klucza lub wartości.
Następnie sprawdź listę przydatnych metod listy Pythona. Miłego kodowania!