Python - práce se slovníky 2/2 (5. díl)

Napsal (») 30. 12. 2010 v kategorii Programování, přečteno: 1668×
banan/img/python-logo-glassy.png

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é aliasseznam 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...

Štítky: Python
Hodnocení:     nejlepší   1 2 3 4 5   odpad
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel dvanáct a šest