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/valueparę.
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 keyi odpowiadający mu, valuektó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 (), KeyErrorjest podnoszony w przypadku, gdy klucz nie zostanie znaleziony w słowniku. Z drugiej strony get()metoda zwraca, Nonejeś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 keyi 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ć delsł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, KeyErrorjeś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 forinstrukcja 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óć, Truejeśli wszystkie klucze słownika mają wartość True (lub jeśli słownik jest pusty). |
| każdy() | Zwróć, Truejeś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)








