dictionary
)Keď ste doteraz používali list
, tak ste sa na list
asi pozerali ako na nejakú postupnosť prvkov.
Na list
sa dá ale pozerať aj inak - ak vieme o nejakom prvku jeho pozíciu (index),
tak k tomu prvku vieme pristúpiť (vieme zistiť jeho hodnotu, zmeniť ho, ...).
Čo ak by sme ale chceli k prvkom pristupovať pomocou niečoho iného,
ako celého čísla (napríklad reťazca, alebo desatinného čísla)?
Slovník (dictionary
, alebo v niektorých jazykoch aj map
) je dátová štruktúra,
ktorá robí podobnú vec, ako reálny slovník - vieme sa jej spýtať,
aká hodnota je priradené k nejakému kľúču, vieme ju zmeniť, vymazať, ...
Je to niečo podobné, ako keď máme papierový slovník a vieme sa pozrieť,
ako sa prekladá nejaké slovo (aké slovo je priradené nejakému slovu).
Hovoríme, že k danému kľúču je asociovaná nejaká hodnota
(niekedy hovoríme, že hodnotu mapujeme na daný kľúč).
Slovník si môžeme predstaviť ako množinu dvojíc (kľúč, hodnota)
,
pričom v takejto množine sa nemôžu nachádzať dve dvojice s rovnakým kľúčom.
Používa sa to podobne ako list
:
d = dict()
d[1] = "jeden"
d["dva"] = 2
d["ksp"] = True
print(d) # vypíše: {1: 'jeden', 'dva': 2, 'ksp': True}
print(d[1]) # vypíše: 'jeden'
d = {"farba": "cervena", "kolesa": 4}
print(d) # vypíše: {'farba': 'cervena', 'kolesa': 4}
print("farba" in d) # vypíše: True
d.pop("farba")
print(d) # vypíše: {'kolesa': 4}
print("farba" in d) # vypíše: False
Ak chceme nejakým spôsobom prejsť cez všetky prvky v slovníku, máme niekoľko možností, podľa toho, čo presne chceme:
d = {"farba": "cervena", "kolesa": 4}
for i in d:
print(i, d[i])
for i in d.keys():
print(i, d[i])
for i in d.values():
print(i)
for key, val in d.items():
print(key, val)
Asi sa zamýšľate nad tým, aké dátové typy je možné vkladať do slovníka.
Odpoveď je, že záleží kam. Pre kľúče platia rovnaké pravidlá ako pre prvky v set
e,
ale ako hodnotu môžete vložiť do slovníku hocičo :)
d = {"tu bude list": [1,2,3,4], "a tu zase set": {'a' 'b', 'c'}}
print(d["tu bude list"]) # vypíše: [1, 2, 3, 4]