Vítejte u pokračování tutoriálu týkajícího se slovníků ... jednoho z mocných nástrojů prgramovacího jazyka Python.
Alias a kopírování
Protože jsou slovníky měnitelné, musíme si dát pozor na aliasování. Kdykoliv dvě proměnné odkazují ke stejné proměnné, jeho změna prostřednictvím jedné proměnné je "viděna" i druhou proměnnou!
(Alias - přiřazení rychlého odkazu na určitý objekt, více až v příštích tutoriálech)
Chceme-li měnit slovník a přitom si zachovat kopii originálu, použijeme metodu copy. Například na slovník seznam:
>>> seznam = {'one': 'down', 'two': 'wrong', 'three': 'false'}
>>> alias = seznam
>>> copy = seznam.copy()
Proměnné alias a seznam odkazují na stejný objekt, naopak proměnná copy odkazuje na čerstvou kopii téhož slovníku. Upravíme-li alias, změní se i seznam:
>>> alias['right'] = 'left'
>>> seznam['right']
'left'
...ale dyž naproti tomu upravíme copy, tak se seznam nezmění:
>>> copy['right'] = 'privilege'
>>> seznam['right']
'left'
Matice pomocí Slovníků
Pokud někteří netuší co matice vlastně je, ZDE je podrobný popis na wikipedii :)
matice = [ [0,0,1],[0,0,0],[0,2,0]]
Nejlepší je však použít slovník. Jako klíče použijeme entice obsahující čísla řádků a sloupců. Zde je slovníkové vyjádření téže matice:
>>> matrix = {(0,2): 1, (2, 1): 2}
- první závorka zobrazuje 0. řádek a 3. sloupec (indexace začína 0, takže jako 1. se udává 0 pokud jsme si nezapamatovali)
- Potřebujeme jenom tři dvojice klíč-hodnota pro tři nenulové prvky matice. Každý klíč je entice a každá hodnota je celé číslo.
Prvky matice jsou přístupné pomocí operátoru [ ]:
>>> matice[0,2]
1
Všimněme si, že vyjádření matice slovníkem má jinou skladbu než vyjádření matice vnořenými seznamy. Místo dvou celočíselných indexů používáme jenom jeden, jímž je entice z celých čísel.
Je zde však jeden problém. Pokusíme-li se ukázat na nulový prvek matice, dostaneme chybu, protože ve slovníku takový klíč uvedený nemáme:
>>> matrix[1,1]
keyerror: (1, 1)
Tento problém řeší metoda get:
>>> matrix.get((0,2), 0)
1
Prvním argumentem je klíč, druhým argumentem je hodnota, kterou má funkce get vrátit, nebude-li zadávaný klíč ve slovníku:
- Metoda get rozhodně zlepšuje přístup k prvkům řídků matice.
Děkuji za pozornost...