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.
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().
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.
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>.
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 |
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'] |
Č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} |
S ključno besedo in lahko preverjamo, ali je nek ključ v slovarju. Preverjamo lahko le prisotnost ključev, ne pa vrednosti.
S pomočjo zanke for lahko iteriramo preko vseh ključev in s tem elementov slovarja.
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: