Słownik Pythona (z przykładami)

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)

Interesujące artykuły...