Slovar Python (z primeri)

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

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 keyin ustrezen, valueki 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 (), KeyErrorse 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 keyin 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 delbesedo 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 forstavek 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)

Zanimive Članki...