U ovom vodiču naučit ćete sve o Python rječnicima; kako su stvoreni, pristupaju, dodaju, uklanjaju elemente iz njih i razne ugrađene metode.
Video: Python rječnici za pohranu parova ključ / vrijednost
Python rječnik je neuređena zbirka predmeta. Svaka stavka rječnika ima key/value
par.
Rječnici su optimizirani za dohvaćanje vrijednosti kad je ključ poznat.
Izrada Python rječnika
Stvaranje rječnika jednostavno je poput stavljanja predmeta unutar kovrčavih zagrada ()
odvojenih zarezima.
Stavka ima a key
i odgovarajući value
koji se izražava kao par ( ključ: vrijednost ).
Iako vrijednosti mogu biti bilo koje vrste podataka i mogu se ponoviti, ključevi moraju biti nepromjenjivog tipa (niz, broj ili skup s nepromjenjivim elementima) i moraju biti jedinstveni.
# 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')))
Kao što vidite odozgo, također možemo stvoriti rječnik pomoću ugrađene dict()
funkcije.
Pristup elementima iz rječnika
Dok se indeksiranje koristi s drugim vrstama podataka za pristup vrijednostima, rječnik koristi keys
. Tipke se mogu koristiti ili unutar uglatih zagrada ()
ili pomoću get()
metode.
Ako koristimo uglate zagrade ()
, KeyError
podiže se u slučaju da ključ nije pronađen u rječniku. S druge strane, get()
metoda se vraća None
ako ključ nije pronađen.
# 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'))
Izlaz
Jack 26 None Traceback (posljednji zadnji poziv): Datoteka "", red 15, u ispisu (my_dict ('adresa')) KeyError: 'address'
Promjena i dodavanje elemenata rječnika
Rječnici su promjenjivi. Pomoću operatora dodjele možemo dodati nove stavke ili promijeniti vrijednost postojećih.
Ako je ključ već prisutan, tada se postojeća vrijednost ažurira. U slučaju da ključ nije prisutan, novi rječnik ( ključ: vrijednost ) dodaje se u rječnik.
# 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)
Izlaz
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Uklanjanje elemenata iz Rječnika
Pomoću pop()
metode možemo ukloniti određenu stavku u rječniku . Ova metoda uklanja stavku s priloženim key
i vraća datoteku value
.
popitem()
Metoda se može koristiti za uklanjanje i povratak proizvoljan (key, value)
stavke par iz rječnika. Sve se stavke mogu ukloniti odjednom, koristeći clear()
metodu.
del
Ključnu riječ također možemo koristiti za uklanjanje pojedinih stavki ili cijelog rječnika.
# 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)
Izlaz
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (najnoviji zadnji poziv): Datoteka "", redak 30, u ispisu (kvadrati) NameError: naziv 'kvadrati' nije definiran
Metode rječnika Pythona
Metode dostupne s rječnikom tabele su u nastavku. Neki od njih već su korišteni u gornjim primjerima.
Metoda | Opis |
---|---|
čisto() | Uklanja sve stavke iz rječnika. |
kopirati() | Vraća plitku kopiju rječnika. |
tipke from (seq (, v)) | Vraća novi rječnik s ključevima iz seq i vrijednošću jednakom v (zadane vrijednosti None ). |
get (ključ (, d)) | Vraća vrijednost ključa. Ako ključ ne postoji, vraća d (zadane vrijednosti None ). |
stavke () | Vrati novi objekt stavki rječnika u formatu (ključ, vrijednost). |
tipke () | Vraća novi objekt ključeva rječnika. |
pop (tipka (, d)) | Uklanja stavku ključem i vraća joj vrijednost ili d ako ključ nije pronađen. Ako d nije naveden i ključ nije pronađen, on se podiže KeyError . |
popitem () | Uklanja i vraća proizvoljnu stavku ( ključ, vrijednost ). Podiže se KeyError ako je rječnik prazan. |
setdefault (tipka (, d)) | Vraća odgovarajuću vrijednost ako je ključ u rječniku. Ako nije, ubacuje ključ s vrijednošću d i vraća d (zadana vrijednost None ). |
ažurirati ((ostalo)) | Ažurira rječnik s parovima ključ / vrijednost s drugih, prepisujući postojeće ključeve. |
vrijednosti () | Vraća novi objekt vrijednosti rječnika |
Evo nekoliko primjera slučajeva upotrebe ovih metoda.
# 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())))
Izlaz
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Znanost')
Razumijevanje rječnika Pythona
Razumijevanje rječnika elegantan je i jezgrovit način za stvaranje novog rječnika iz itera u Pythonu.
Razumijevanje rječnika sastoji se od para izraza ( ključ: vrijednost ) nakon kojeg slijedi for
iskaz unutar kovrčavih zagrada ()
.
Evo primjera za izradu rječnika sa svakom stavkom u paru broja i njegovog kvadrata.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Izlaz
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Ovaj je kod ekvivalentan
squares = () for x in range(6): squares(x) = x*x print(squares)
Izlaz
(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
Ugrađena funkcija sviđa all()
, any()
, len()
, cmp()
, sorted()
, itd najčešće se koriste uz rječnika za obavljanje različitih zadataka.
Funkcija | Opis |
---|---|
svi() | Vrati True ako su svi ključevi rječnika Tačni (ili ako je rječnik prazan). |
bilo koji () | Vrati True ako je bilo koji ključ rječnika istinit. Ako je rječnik prazan, vratite se False . |
len () | Vrati duljinu (broj stavki) u rječniku. |
cmp () | Uspoređuje stavke dvaju rječnika. (Nije dostupno u Pythonu 3) |
sortirano () | Vrati novi sortirani popis ključeva u rječniku. |
Evo nekoliko primjera koji koriste ugrađene funkcije za rad s rječnikom.
# 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))
Izlaz
Lažno točno 6 (0, 1, 3, 5, 7, 9)