Python vārdnīca (ar piemēriem)

Š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/valuepā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 keyun atbilstošs, valuekas 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 (), KeyErrortiek pacelta, ja vārdnīcā nav atrasta atslēga. No otras puses, get()metode atgriežas, Noneja 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 keyun 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 .

delAtslē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, KeyErrorja 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 forizteikums 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, Trueja visi vārdnīcas taustiņi ir Patiesi (vai ja vārdnīca ir tukša).
jebkurš () Atgriezieties, Trueja 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)

Interesanti raksti...