Rječnici

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

RJEČNICI

STRUKTURE PODATAKA
Rječnik (engl. dictionary)

Rječnik je zbirka s raspršenim smještajem elemenata


■ Svaki element rječnika ima ključ i pripadnu vrijednost.
■ Elementi rječnika nemaju svoje mjesto (indeks) u rječniku,
ali imaju ključ pomoću kojeg se može pristupati
vrijednostima
■ Ključevi rječnika ne moraju nužno biti brojevi već mogu biti i
znakovi ili stringovi
Rječnik (engl. dictionary)

#prazan rječnik, vitičaste zagrade karakteristične su za rječnike


my_dict = {}

#ključevi su cijeli brojevi, pripadne vrijednosti su stringovi


my_dict = {1: ‘password1', 2: ‘password2’}

#rječnik možemo kreirati koristeći ugrađenu funkciju dict ()


my_dict = dict ({1: ‘password1', 2: ‘password2'})
Kako pristupati elementima rječnika?
Elementi rječnika nemaju svoje mjesto (indeks) u rječniku, ali imaju ključ pomoću kojeg se
može pristupati vrijednostima
my_dict = {‘user1’ : 'Jack1234’, ‘user2’: ‘lozinka1234’}
print(my_dict[‘user1’]) #Output: Jack1234

Ključ se može koristiti bilo u uglatim zagradama ili pomoću metode get()
print(my_dict.get(‘user2’)) #Output: lozinka1234

Razlika kada se koristi get() je ta što vraća None umjesto KeyError, ako ključ nije pronađen
my_dict.get(‘user3’) #Output: None
my_dict[‘user3’] #Output: KeyError: 'user3'
Kako promijeniti ili dodati elemente u rječnik?

Rječnik se može mijenjati.


Možemo dodati nove stavke ili promijeniti vrijednost postojećih stavki.

my_dict = {‘user1’ : ‘Jack1234’, ‘user2’: ‘lozinka1234’}


my_dict[‘user1'] = ‘Jack27’ #promjena vrijednosti
print(my_dict) #Output: {'user1': 'Jack27', 'user2': 'lozinka1234’}

my_dict[‘user3'] = 'Downtown’ #dodavanje vrijednosti


print(my_dict) #Output: {'user1': 'Jack27', 'user2': 'lozinka1234', 'user3': 'Downtown'}
Kako izbrisati ili ukloniti elemente iz rječnika?
1) U rječniku možemo ukloniti određenu stavku pomoću metode pop ()
my_dict = {‘user1’ : ‘Jack1234’, ‘user2’: ‘lozinka1234’, ‘user3’: ‘pass1234’, ‘user4’: ‘lozinka4321’}
print(my_dict.pop(‘user4’)) #lozinka4321

2) Metoda popitem () može se koristiti za uklanjanje i vraćanje proizvoljnih stavki (ključ, vrijednost)
print(my_dict.popitem()) #('user3', 'pass1234’)

3) Svi se elementi mogu ukloniti odjednom primjenom metode clear ()


my_dict.clear()

4) Također možemo koristiti ključnu riječ del da uklonimo pojedinačne elemente ili cijeli rječnik
del my_dict
Skraćeno pisanje linija koda
Primjer za izradu rječnika pri čemu svaka stavka predstavlja par: broj i njegov kvadrat
Petlja for počinje s početnom vrijednosti 0, završava sa vrijednošću 5
squares = {x: x*x for x in range(6)}
print(squares) #Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Prethodno napisan kod ekvivalentan je sljedećem dijelu koda:


squares = {}
for x in range(6):
squares[x] = x*x
Skraćeno pisanje linija koda
Primjer za izradu rječnika sa samo neparnim stavkama
Petlja for počinje s početnom vrijednosti 1, završava sa vrijednošću 9

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}
Osnovne operacije s rječnicima
Možemo provjeriti je li ključ u rječniku ili ne, koristeći ključnu riječ programskog
jezika Python in

squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81, 11:121, 13:169}


print(1 in squares) # Output: True
print(2 not in squares) # Output: True

#primijetite da vrijedi samo za ključeve, a ne za vrijednosti


print(49 in squares) # Output: False
Osnovne operacije s rječnicima

Opis djelovanja

d [k] vraća vrijednost koja pripada ključu k

del (d [k]) briše ključ k i njemu pripadnu vrijednost

k in d vraća True ako se ključ k nalazi u rječniku d

k not in d vraća True ako se ključ k ne nalazi u rječniku d


Ugrađene funkcije

Funkcija Opis djelovanja

all() Vraća True ako su svi ključevi u rječniku ispravni (ili ako je rječnik prazan)

any() Vraća True ako je bilo koji ključ rječnika ispravan.


Ako je rječnik prazan, vraća False

cmp() Usporedba stavki dva rječnika

len() Vratite duljinu (broj elemenata)

sorted() Vraća novi sortirani popis ključeva u rječniku


Metode za rad s rječnikom
Ime metode Način uporabe Opis djelovanja

keys() d.keys() vraća listu svih ključeva

values() d.values() vraća listu svih vrijednosti

items() d.items() vraća listu parova: (ključ , vrijednost)

get(k) d.get(k) vraća vrijednost d[k]; ako ključ ne


postoji u rječniku vraća None

get(k,x) d.get(k,x) vraća vrijednost d[k]; ako ključ ne


postoji u rječniku vraća x

clear() d.clear() briše sve elemente rječnika, ostaje


prazan rječnik d
Primjena rječnika u svijetu programiranja

■ Rječnici se doista koriste za zapisivanje korisničkih imena i pripadnih lozinki.


■ Svake godine pojavi se na Internetu lista najgorih lozinki koje korisnici koriste, odnosno
lozinke koje koristi veliki broj ljudi, a lako ih je pogoditi. Dobar alat za brute
force “pogađanje” bi većinu ovih lozinki otkrio u intervalu od par sekundi do par minuta.
■ Nije problem samo u korištenju imena jer je to lako zapamtiti, ali hakeri su prilično
uspješni u “probijanju” korisnički računa gdje korisnici za lozinku koriste imena slavnih
osoba. Pogotovo iz pop-kulture, sporta ili politike.
Primjena rječnika u svijetu programiranja
Lista najgorih lozinki
123456 123123
password monkey
123456789 654321
12345678 !@#$%^&*
12345 charlie
111111 aa123456
1234567 donald
sunshine password1
qwerty qwerty123
iloveyou 666666
princess abc123
admin football
welcome
Problemski zadatak

■ Filip uzima novčanice iz svog novčanika i izgovara likove.


„DOBRILA“ označava novčanicu od 10 kuna. „3JELACIC“ znači da
je pronašao tri novčanice od 20 kuna što je ukupno 60 kuna.
■ Napiši program koji će na osnovi zadanog izgovorenog slijeda
Filipovih izjava ispisati ukupnu vrijednost novčanica.
Problemski zadatak

vrijednost ključevi
10 DOBRILA
20 JELAČIĆ
50 GUNDULIĆ
100 MAŽURANIĆ
200 RADIĆ
500 MARULIĆ
1000 STARČEVIĆ

You might also like