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

« zpět na python

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

Nezávazně vyzkoušejte webové stránky zdarma

Klientská sekce pro Vás

Spravujte své domény a hosting pohodlně 24 hodin denně

Kontakt pro zákazníky

Technická podpora

PO-PÁ 8:00-21:00
SO-NE, svátky 9:00-21:00

E-mail: podpora@banan.cz

Online pracovník

Patrik Jankov

+420 553 810 250

Online chat

Zvládáme opensource

Na našich serverech jsme ručně ověřili funkci více než 140 opensource systémů, některé z nich nabízíme na jedno kliknutí v administraci.

Hostované domény

7754 domén 6478 1276

Poslední článek - HOMEPAGE PRVKY

O
Ověřit dostupnost domény
Technická podpora: +420 553 810 250podpora@banan.cz
Technická podpora 800-2100 (SO-NE 900-2100) X
Online pracovník: Patrik Jankov
+420 553 810 250
podpora@banan.cz nebo Online chat
Kontaktovat technickou podporu můžete zde
Kontaktovat technickou podporu můžete zde
PO-PÁ 800-2100 (víkendy a svátky 900-2100)