W tym samouczku dowiesz się wszystkiego o słownikach Pythona; sposób ich tworzenia, dostęp, dodawanie, usuwanie z nich elementów oraz różne wbudowane metody.
Wideo: słowniki Pythona do przechowywania par klucz / wartość
Słownik Pythona jest nieuporządkowaną kolekcją elementów. Każda pozycja w słowniku ma key/value
parę.
Słowniki są zoptymalizowane pod kątem pobierania wartości, gdy znany jest klucz.
Tworzenie słownika Pythona
Tworzenie słownika jest tak proste, jak umieszczanie elementów w nawiasach klamrowych ()
oddzielonych przecinkami.
Element ma key
i odpowiadający mu, value
który jest wyrażony jako para ( klucz: wartość ).
Chociaż wartości mogą być dowolnego typu danych i mogą się powtarzać, klucze muszą być niezmiennego typu (ciąg, liczba lub krotka z niezmiennymi elementami) i muszą być unikalne.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Jak widać z góry, możemy również utworzyć słownik za pomocą wbudowanej dict()
funkcji.
Dostęp do elementów ze słownika
Podczas gdy indeksowanie jest używane z innymi typami danych w celu uzyskania dostępu do wartości, słownik używa keys
. Klucze mogą być używane w nawiasach kwadratowych ()
lub w get()
metodzie.
Jeśli używamy nawiasów kwadratowych ()
, KeyError
jest podnoszony w przypadku, gdy klucz nie zostanie znaleziony w słowniku. Z drugiej strony get()
metoda zwraca, None
jeśli klucz nie zostanie znaleziony.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Wynik
Jack 26 Brak Traceback (ostatnie połączenie ostatnie): Plik „”, wiersz 15, drukowany (my_dict ('address')) KeyError: 'address'
Zmiana i dodawanie elementów słownika
Słowniki są zmienne. Możemy dodawać nowe pozycje lub zmieniać wartość istniejących pozycji za pomocą operatora przypisania.
Jeśli klucz już istnieje, istniejąca wartość zostanie zaktualizowana. W przypadku braku klucza do słownika dodawana jest nowa para ( klucz: wartość ).
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Wynik
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Usuwanie elementów ze słownika
Możemy usunąć konkretną pozycję ze słownika za pomocą pop()
metody. Ta metoda usuwa element z podanym key
i zwraca value
.
popitem()
Sposób może być stosowany do usuwania i powrót dowolną (key, value)
parę elementu ze słownika. Wszystkie elementy można od razu usunąć za pomocą clear()
metody.
Możemy również użyć del
słowa kluczowego, aby usunąć poszczególne pozycje lub cały słownik.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Wynik
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (ostatnie ostatnie połączenie): Plik "", wiersz 30, w print (kwadraty) NameError: nazwa „kwadraty” nie jest zdefiniowana
Metody słownika Pythona
Metody, które są dostępne ze słownikiem, przedstawiono w tabeli poniżej. Niektóre z nich zostały już wykorzystane w powyższych przykładach.
metoda | Opis |
---|---|
jasny() | Usuwa wszystkie pozycje ze słownika. |
Kopiuj() | Zwraca płytką kopię słownika. |
fromkeys (seq (, v)) | Zwraca nowy słownik z kluczami od seq i wartością równą v (domyślnie None ). |
get (klucz (, d)) | Zwraca wartość klucza. Jeśli klucz nie istnieje, zwraca d (domyślnie None ). |
przedmiotów() | Zwraca nowy obiekt elementów słownika w formacie (klucz, wartość). |
Klucze() | Zwraca nowy obiekt kluczy słownika. |
pop (klucz (, d)) | Usuwa element z kluczem i zwraca jego wartość lub d, jeśli klucz nie został znaleziony. Jeśli d nie zostanie podany, a klucz nie zostanie znaleziony, zostanie podniesiony KeyError . |
popitem () | Usuwa i zwraca dowolny element ( klucz, wartość ). Podnosi, KeyError jeśli słownik jest pusty. |
setdefault (klucz (, d)) | Zwraca odpowiednią wartość, jeśli klucz znajduje się w słowniku. Jeśli nie, wstawia klucz o wartości d i zwraca d (domyślnie None ). |
aktualizacja ((inne)) | Aktualizuje słownik za pomocą par klucz / wartość z innych, nadpisując istniejące klucze. |
wartości () | Zwraca nowy obiekt wartości słownika |
Oto kilka przykładowych przypadków użycia tych metod.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Wynik
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Nauka')
Rozumienie słownika Pythona
Rozumienie słownika to elegancki i zwięzły sposób tworzenia nowego słownika z iterowalnego w Pythonie.
Rozumienie słownikowe składa się z pary wyrażeń ( klucz: wartość ), po której następuje for
instrukcja w nawiasach klamrowych ()
.
Oto przykład tworzenia słownika, w którym każdy element jest parą liczby i jej kwadratu.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Wynik
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5:25)
Ten kod jest równoważny z
squares = () for x in range(6): squares(x) = x*x print(squares)
Wynik
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5:25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Wbudowane funkcje, takie jak all()
, any()
, len()
, cmp()
, sorted()
, itd. Są powszechnie stosowane ze słownikami do wykonywania różnych zadań.
Funkcjonować | Opis |
---|---|
wszystko() | Zwróć, True jeśli wszystkie klucze słownika mają wartość True (lub jeśli słownik jest pusty). |
każdy() | Zwróć, True jeśli którykolwiek klucz ze słownika jest prawdziwy. Jeśli słownik jest pusty, zwróć False . |
len () | Zwróć długość (liczbę elementów) w słowniku. |
cmp () | Porównuje pozycje dwóch słowników. (Niedostępne w Pythonie 3) |
posortowane () | Zwraca nową posortowaną listę kluczy w słowniku. |
Oto kilka przykładów wykorzystujących funkcje wbudowane do pracy ze słownikiem.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Wynik
Fałsz Prawda 6 (0, 1, 3, 5, 7, 9)