V tej vadnici boste izvedeli vse o slovarjih Python; kako so ustvarjeni, dostop do njih, dodajanje, odstranjevanje elementov iz njih in različne vgrajene metode.
Video: slovarji Python za shranjevanje parov ključ / vrednost
Python slovar je neurejena zbirka predmetov. Vsak element slovarja ima svoj key/value
par.
Slovarji so optimizirani za pridobivanje vrednosti, ko je ključ znan.
Ustvarjanje slovarja Python
Ustvarjanje slovarja je tako enostavno kot postavitev elementov v zavite oklepaje, ()
ločene z vejicami.
Element ima key
in ustrezen, value
ki je izražen kot par ( ključ: vrednost ).
Vrednosti so lahko katere koli podatkovne vrste in se lahko ponavljajo, ključi pa morajo biti nespremenljive vrste (niz, število ali sklop z nespremenljivimi elementi) in morajo biti unikatni.
# 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')))
Kot lahko vidite od zgoraj, lahko s pomočjo vgrajene dict()
funkcije ustvarimo tudi slovar .
Dostop do elementov iz slovarja
Medtem ko se indeksiranje uporablja za dostop do vrednosti z drugimi vrstami podatkov, slovar uporablja keys
. Tipke lahko uporabljate v oglatih oklepajih ()
ali z get()
metodo.
Če uporabimo oglate oklepaje ()
, KeyError
se dvigne, če v slovarju ni ključa. Po drugi strani pa se get()
metoda vrne, None
če ključa ne najdemo.
# 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'))
Izhod
Jack 26 Brez sledenja (zadnji zadnji klic): Datoteka "", vrstica 15, v tisku (my_dict ('naslov')) KeyError: 'address'
Spreminjanje in dodajanje elementov slovarja
Slovarji so spremenljivi. Z operaterjem dodelitve lahko dodamo nove elemente ali spremenimo vrednost obstoječih.
Če je ključ že prisoten, se obstoječa vrednost posodobi. Če ključa ni, se v slovar doda nov par ( ključ: vrednost ).
# 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)
Izhod
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Odstranjevanje elementov iz slovarja
Z pop()
metodo lahko odstranimo določen predmet iz slovarja . Ta metoda odstrani predmet s priloženim key
in vrne value
.
popitem()
Metoda se lahko uporablja za odstranjevanje in vrniti poljuben (key, value)
element par iz slovarja. Vse predmete lahko odstranite naenkrat z uporabo clear()
metode.
Ključno del
besedo lahko uporabimo tudi za odstranjevanje posameznih predmetov ali celotnega slovarja.
# 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)
Izhod
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (zadnji zadnji klic): Datoteka "", vrstica 30, v tisku (kvadratki) NameError: ime 'kvadrati' ni določeno
Metode slovarja Python
Metode, ki so na voljo v slovarju, so predstavljene spodaj. Nekateri izmed njih so že bili uporabljeni v zgornjih primerih.
Metoda | Opis |
---|---|
jasno () | Odstrani vse predmete iz slovarja. |
kopirati() | Vrne plitvo kopijo slovarja. |
fromkeys (seq (, v)) | Vrne nov slovar s ključi iz seq in vrednostjo, ki je enaka v (privzeto je None ). |
get (tipka (, d)) | Vrne vrednost ključa. Če ključ ne obstaja, vrne d (privzeto na None ). |
predmetov () | Vrnite nov predmet elementov slovarja v obliki (ključ, vrednost). |
tipke () | Vrne nov predmet ključev slovarja. |
pop (tipka (, d)) | Odstrani element s ključem in vrne njegovo vrednost ali d, če ključa ne najdete. Če d ni na voljo in ključa ne najdete, se dvigne KeyError . |
popitem () | Odstrani in vrne poljuben element ( ključ, vrednost ). Dvigne se, KeyError če je slovar prazen. |
setdefault (tipka (, d)) | Vrne ustrezno vrednost, če je ključ v slovarju. Če ne, vstavi ključ z vrednostjo d in vrne d (privzeto na None ). |
posodobi ((drugo)) | Posodobi slovar s pari ključ / vrednost drugih, prepiše obstoječe ključe. |
vrednote() | Vrne nov objekt vrednosti slovarja |
Tu je nekaj primerov uporabe teh 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())))
Izhod
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Znanost ')
Razumevanje slovarja Python
Razumevanje slovarja je eleganten in jedrnat način za ustvarjanje novega slovarja iz itera v Pythonu.
Razumevanje slovarja je sestavljeno iz para izraza ( ključ: vrednost ), ki mu sledi for
stavek v zavitih oklepajih ()
.
Tu je primer izdelave slovarja, pri čemer je vsak element par števila in njegov kvadrat.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Izhod
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Ta koda je enakovredna
squares = () for x in range(6): squares(x) = x*x print(squares)
Izhod
(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
Vgrajen funkcije všeč all()
, any()
, len()
, cmp()
, sorted()
, itd se običajno uporablja s slovarji za opravljanje različnih nalog.
Funkcija | Opis |
---|---|
vse () | Vrne se, True če so vse tipke slovarja True (ali če je slovar prazen). |
kaj() | Vrnite se, True če je kateri koli ključ slovarja resničen. Če je slovar prazen, se vrnite False . |
len () | Vrnite dolžino (število elementov) v slovarju. |
cmp () | Primerja elemente dveh slovarjev. (Ni na voljo v Python 3) |
razvrščeno () | Vrnite nov razvrščen seznam tipk v slovarju. |
Tu je nekaj primerov, ki uporabljajo vgrajene funkcije za delo s slovarjem.
# 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))
Izhod
False True 6 (0, 1, 3, 5, 7, 9)