Šajā apmācībā jūs uzzināsiet visu par Python vārdnīcām; kā tie tiek izveidoti, piekļūstot tiem, pievienojot tiem, noņemot no tiem elementus un dažādas iebūvētās metodes.
Video: Python vārdnīcas, lai saglabātu atslēgu / vērtību pāri
Python vārdnīca ir nesakārtota priekšmetu kolekcija. Katram vārdnīcas vienumam ir key/value
pāris.
Vārdnīcas ir optimizētas, lai izgūtu vērtības, kad atslēga ir zināma.
Python vārdnīcas izveide
Vārdnīcas izveide ir tikpat vienkārša kā priekšmetu ievietošana cirtainās lencēs, kas ()
atdalītas ar komatiem.
Vienumam ir key
un atbilstošs, value
kas izteikts kā pāris ( atslēga: vērtība ).
Lai arī vērtībām var būt jebkura veida dati un tās var atkārtoties, taustiņiem jābūt nemaināmiem (virkne, skaitlis vai kopa ar nemaināmiem elementiem), un tiem jābūt unikāliem.
# 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')))
Kā redzat no augšas, mēs varam arī izveidot vārdnīcu, izmantojot iebūvēto dict()
funkciju.
Piekļuve elementiem no vārdnīcas
Kaut arī indeksēšana tiek izmantota kopā ar citiem datu tipiem, lai piekļūtu vērtībām, vārdnīca to izmanto keys
. Atslēgas var izmantot kvadrātiekavās ()
vai ar get()
metodi.
Ja mēs izmantojam kvadrātiekavas ()
, KeyError
tiek pacelta, ja vārdnīcā nav atrasta atslēga. No otras puses, get()
metode atgriežas, None
ja atslēga nav atrasta.
# 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'))
Rezultāts
Jack 26 Nav Traceback (pēdējais zvans pēdējais): Fails "", 15. rinda, drukātā veidā (my_dict ('address')) KeyError: 'address'
Vārdnīcas elementu maiņa un pievienošana
Vārdnīcas ir mainīgas. Mēs varam pievienot jaunus vienumus vai mainīt esošo vienumu vērtību, izmantojot piešķiršanas operatoru.
Ja atslēga jau ir, esošā vērtība tiek atjaunināta. Gadījumā, ja atslēgas nav, vārdnīcai tiek pievienots jauns pāris ( atslēga: vērtība ).
# 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)
Rezultāts
('vārds': 'Džeks', 'vecums': 27) ('vārds': 'Džeks', 'vecums': 27, 'adrese': 'centrs')
Elementu noņemšana no vārdnīcas
Izmantojot pop()
metodi, mēs varam noņemt noteiktu vienumu vārdnīcā . Šī metode noņem vienumu ar norādīto key
un atgriež value
.
popitem()
Metodi var izmantot, lai novērstu un atgriezt patvaļīgu (key, value)
objektu pāri no vārdnīcas. Izmantojot šo clear()
metodi, visus vienumus var noņemt uzreiz .
del
Atslēgvārdu mēs varam izmantot arī atsevišķu vienumu vai visas pašas vārdnīcas noņemšanai.
# 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)
Rezultāts
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (pēdējais zvans pēdējais): fails "", 30. rindiņa drukātā veidā (kvadrāti) NameError: nosaukums 'kvadrāti' nav definēts
Python vārdnīcu metodes
Metodes, kas ir pieejamas kopā ar vārdnīcu, ir apkopotas zemāk. Daži no tiem jau ir izmantoti iepriekš minētajos piemēros.
Metode | Apraksts |
---|---|
skaidrs () | Noņem visus vienumus no vārdnīcas. |
kopija () | Atgriež vārdnīcas seklu eksemplāru. |
fromkeys (sek ((v)) | Atgriež jaunu vārdnīcu ar atslēgām no sek un vērtību, kas vienāda ar v (pēc noklusējuma None ). |
iegūt (atslēga (, d)) | Atgriež atslēgas vērtību. Ja atslēga nepastāv, atgriež d (pēc noklusējuma None ). |
preces () | Atgrieziet jaunu vārdnīcas vienumu objektu (atslēga, vērtība) formātā. |
taustiņi () | Atgriež jaunu vārdnīcas taustiņu objektu. |
pop (taustiņš (, d)) | Noņem vienumu ar atslēgu un atgriež tā vērtību vai d, ja atslēga nav atrasta. Ja d nav norādīts un atslēga nav atrasta, tā paaugstina KeyError . |
popitem () | Noņem un atgriež patvaļīgu vienumu ( atslēga, vērtība ). Paaugstina, KeyError ja vārdnīca ir tukša. |
setdefault (taustiņš (, d)) | Atgriež atbilstošo vērtību, ja atslēga atrodas vārdnīcā. Ja nē, ievietojiet atslēgu ar vērtību d un atgriež d (pēc noklusējuma None ). |
atjaunināt ((cits)) | Vārdnīca tiek atjaunināta ar atslēgu / vērtību pāriem no citiem, pārrakstot esošos taustiņus. |
vērtības () | Atgriež jaunu vārdnīcas vērtību objektu |
Šeit ir daži šo metožu izmantošanas gadījumu piemēri.
# 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())))
Rezultāts
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('Angļu', 'Matemātika', ' Zinātne)
Python vārdnīcas izpratne
Vārdnīcas izpratne ir elegants un kodolīgs veids, kā izveidot jaunu vārdnīcu no atkārtojamās versijas Python.
Vārdnīcas izpratne sastāv no izteiksmju pāra ( atslēga: vērtība ), kam seko for
izteikums cirtaino iekavu iekšpusē ()
.
Šeit ir piemērs, kā izveidot vārdnīcu, kur katrs vienums ir skaitļa un tā kvadrāta pāri.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Rezultāts
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Šis kods ir ekvivalents
squares = () for x in range(6): squares(x) = x*x print(squares)
Rezultāts
(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
Built-in funkcijas, piemēram all()
, any()
, len()
, cmp()
, sorted()
, uc parasti lieto kopā ar vārdnīcām, lai veiktu dažādus uzdevumus.
Funkcija | Apraksts |
---|---|
visi () | Atgriezieties, True ja visi vārdnīcas taustiņi ir Patiesi (vai ja vārdnīca ir tukša). |
jebkurš () | Atgriezieties, True ja kāda vārdnīcas atslēga ir patiesa. Ja vārdnīca ir tukša, atgriezieties False . |
len () | Atgrieziet vārdnīcas garumu (vienumu skaitu). |
cmp () | Salīdzina divu vārdnīcu vienumus. (Nav pieejams Python 3) |
sakārtots () | Atgrieziet vārdnīcā jaunu sakārtotu atslēgu sarakstu. |
Šeit ir daži piemēri, kas izmanto iebūvētās funkcijas darbam ar vārdnīcu.
# 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))
Rezultāts
Nepatiesa patiesība 6 (0, 1, 3, 5, 7, 9)