10 przydatnych metod słownikowych Pythona

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…

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!