Slovarji

Kaj je slovar v Pythonu?

Pythonov slovar je neurejena zbirka predmetov. Medtem ko imajo drugi sestavljeni podatkovni tipi samo vrednost kot element, ima slovar s parom ključ: vrednost.

Slovarji so optimizirani za pridobivanje vrednosti, ko je ključ znan.

Kako ustvariti slovar?

Ustvarjanje slovarja je tako preprosto, kot da postavite predmete znotraj zavihanih oklepajev {}, ločenih z vejico.

Postavka ima ključ in ustrezno vrednost, izraženo kot par, ključ: vrednost.

Vrednosti so lahko kakršnegakoli podatkovnega tipa in se lahko ponovijo, ključi pa morajo biti nespremenljivega tipa (niz, število ali terke) in morajo biti unikatni.



          

Kot lahko vidimo, lahko ustvarimo tudi slovar z vgrajeno funkcijo dict().

Kako dostopati do elementov iz slovarja?

Medtem ko pri drugih strukturah dostopamo do elementov z indeksi, uporablja slovar ključe. Ključ lahko uporabimo bodisi v oglatih oklepajih bodisi z metodo get ().

Razlika z uporabo metode get () je, da namesto napake "KeyError" vrne "None", če ključa ni mogoče najti v danem slovarju.



          


Spreminjanje in dodajanje elementov v slovarju

Slovar je spremenljiv. Vrednosti dodajamo ali spreminjamo obstoječe z operatorjem prirejanja.

Če je ključ že v slovarju, se njemu ustrezna vrednost posodobi, sicer se v slovar doda nov par <ključ: vrednost>.

Primer:


          


Brisanje (odstranjevanje) elementov iz seznama

S pomočjo metode pop () lahko odstranimo določen element v slovarju. Ta metoda odstrani element s podanim ključem in hkrati vrne vrednost.

Metodo, popitem () pa lahko uporabimo za odstranitev nazadnje vnešenega elementa (ključ, vrednost) iz slovarja. Hkrati pa vrne vrednost odstranjenega elementa.

Cel seznam lahko povsem izpraznimo z metodo clear ().

Posamezne elemente lahko iz seznama (lahko tudi vse) odstranimo tudi s ključno besedo del lahko uporabimo tudi za odstranitev posameznih elementov ali slovarja v celoti.

Primer:

Koda primera Izpis (ki se konča z napako)
# tvorimo tabelo (slovar) kvadratov stevil kvadrati = {1:1, 2:4, 3:9, 4:16, 5:25}
# odstranimo element na vrhu slovarja
# in uporaba (izpis) njegove vrednosti
print(kvadrati.pop(4))
#izpis preostanka slovarja print(kvadrati)
# odstranimo poljuben element in ga izpisemo
print(kvadrati.popitem()) print(kvadrati)
# brisanje elementa z dolocenim ključem
del kvadrati[2]
print(kvadrati) # brisanje vseh elementov
kvadrati.clear()
print(kvadrati) #slovar je se, a je prazen
# brisanje slovarja kot takega
del kvadrati print(kvadrati) # napaka! kvadrati ne obstaja vec
16
{1: 1, 2: 4, 3: 9, 5: 25}
(5, 25)
{1: 1, 2: 4, 3: 9}
{1: 1, 3: 9}
{}
Traceback (most recent call last): line 20, in print(kvadrati) # napaka! kvadrati ne obstaja vec NameError: name 'kvadrati' is not defined

Metode slovarja

Spodnja tabela prikazuje metode, ki jih lahko uporabimo pri slovarjih.

Metoda Opis
clear() Odstrani vse elemente iz slovarja. Ga torej izprazni.
copy() Vrne (plitko) kopijo slovarja.
fromkeys([,v]) Vrne nov slovar s ključi od in vrednostmi, enakimi v(privzeto  None).
get([,]) Vrne vrednost za ključ key.  Če tega ključa ni, vrne  (privzeto None).
items() Vrne nov pogled na elemente slovarja (key, value).
keys() Vrne nov pogled na ključe slovarja.
pop([,]) Vrne vrednost zadnjega elementa v seznamu in zbriše ta element s seznama. Če je seznam prazen, javi napako  KeyError.
popitem() Vrne zadnji element (ključ,vrednost) in ga hkrati odstrani s seznama. Javi napako KeyError, če je slovar prazen.
setdefault([,]) Je podobna metodi get(), vendar če ključa še ni v slovarju, nastavi njegovo vrednost na privzeti.
update([]) Posodobi slovar s pari ključ/vrednost in pri tem prekrije obstoječe ključe.
values() Vrne nov pogled na vrednosti v slovarju

Nekaj primerov uporabe metod:

Koda primera Izpis (razloži posamezne vrstice izpisa)
predmeti= ('Matematika','Fizika','Kemija')
ocena = 5
ocene = dict.fromkeys(predmeti,ocena)
print(ocene)
for predmet in ocene.items():
    print(predmet)
print(sorted(ocene.keys()))
{'Matematika': 5, 'Fizika': 5, 'Kemija': 5}
('Matematika', 5)
('Fizika', 5)
('Kemija', 5)
['Fizika', 'Kemija', 'Matematika']




Razumevanje Python slovarja

Če razumemo Pythonove slovarje, bomo znali tudi sami tvoriti uporaben slovar. Slovar je torej sestavljen iz parov (ključ:vrednost). Seznam takih parov je podan v zavitih oklepajih {} .


Poglejmo primer, slovarjav, v katerem podajamo kvadrate posameznih števil. Vsak par je zato sestavljen iz števila in njemu ustreznega kvadrata:

Primer takega slovarja je torej:  {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Tak slovar (tudi precej daljši) bi lahko tvorili z naslednjim stavkom:

kvadrati = {x: x*x for x in range(6)}

ali pa tako (kar je ekvivalentno):

kvadrati = {} for x in range(6): kvadrati[x] = x*x

Preskus primera:

Koda primera Izpis primera
kvadrati1 = {x: x*x for x in range(6)}
print(kvadrati1)
kvadrati2 = {}
for x in range(6):
   kvadrati2[x] = x*x
print (kvadrati2)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}


Druge operacije slovarja

Preverjanje članstva slovarja

S ključno besedo in lahko preverjamo, ali je nek ključ v slovarju. Preverjamo lahko le prisotnost ključev, ne pa vrednosti.



          


Iteracije preko slovarjev

S pomočjo zanke for lahko iteriramo preko vseh ključev in s tem elementov slovarja.



          


Vgrajene funkcije v slovarju

Funkcija Opis
len() Vrne dolžino slovarja (število elementov v slovarju).
sorted() Vrne nov urejen seznam ključev v slovarju.

Nekaj primerov z vgrajenimi funkcijami: