Python rječnik (s primjerima)

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/valuepar.

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 keyi odgovarajući valuekoji 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 (), KeyErrorpodiže se u slučaju da ključ nije pronađen u rječniku. S druge strane, get()metoda se vraća Noneako 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 keyi 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.

delKljuč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 KeyErrorako 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 foriskaz 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 Trueako su svi ključevi rječnika Tačni (ili ako je rječnik prazan).
bilo koji () Vrati Trueako 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)

Zanimljivi članci...