Jiný typ hodnot, které v sobě mohou obsahovat další hodnoty, je slovník. Pro příklad si představ překladový slovník, třeba česko-anglický:
Slovník v Pythonu obsahuje záznamy, a každý záznam přiřazuje nějakému klíči nějakou hodnotu. V našem příkladu je klíči Jablko přiřazena hodnota Apple, klíči Knoflík náleží hodnota Button a klič Myš ukazuje na Mouse.
V Pythonu by se takový slovník napsal následovně:
>>> slovnik = {'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse'}
Naše klíče a hodnoty jsou slova – krátké texty, tedy řetězce, které je potřeba dát do uvozovek. Klíč a hodnota jsou oddělené dvojtečkou, jednotlivé dvojice se od sebe oddělují čárkou, a celý slovník je uzavřený ve složených závorkách.
Když budeš chtít v takovém slovníku něco najít, potřebuješ vědět co hledat. Potřebuješ klíč. Pomocí hranatých závorek můžeš zjistit hodnotu, která danému klíči odpovídá:
>>> slovnik['Jablko']
'Apple'
Je to podobné jako u seznamů, jen v hranatých závorkách není index (pořadí prvku) nebo rozmezí s dvojtečkou, ale klíč.
Naopak to nejde – slovník neumožňuje podle hodnoty přímo zjistit klíč. Na překlad z angličtiny do češtiny bys potřebovala druhý slovník.
Co se stane, když klíč ve slovníku není?
>>> slovnik['Pes']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Pes'
Python si postěžuje na KeyError
– chybu klíče.
Podobně jako seznamy se ale slovníky dají měnit. Nový záznam vytvoříš takhle:
>>> slovnik['Pes'] = 'Dog'
>>> slovnik
{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse', 'Pes': 'Dog'}
Na rozdíl od překladového slovníku nemusí být Pythonní slovník seřazený podle abecedy. Není to potřeba, počítač umí rychle vyhledávat i bez seřazení.
Kdybys potřebovalaa změnit už existující záznam, použij stejný příkaz. K jednomu klíči může patřit jen jedna hodnota.
>>> slovnik['Pes'] = 'Extension cord'
>>> slovnik
{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse', 'Pes': 'Extension cord'}
Chceš-li ze zlovníku nějaký záznam smazat, dělá se to podobně jako
u seznamů příkazem del
:
>>> del slovnik['Pes']
>>> slovnik
{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse'}
A když budeš chtít zjistit, kolik je ve slovníku záznamů,
zeptáš se podobně jako na počet znaků řetězce nebo prvků seznamu.
Použiješ funkci len()
.
>>> len(slovnik)
3
Skvělé! Co víš o slovnících:
del
smazat.Jsi připravena na další část?
{ "data": { "sessionMaterial": { "id": "session-material:2018/snake-brno:intro:6", "title": "SlovnĂky", "html": "\n \n \n\n <h1>Slovníky</h1>\n<p>Jiný typ hodnot, které v sobě mohou obsahovat další hodnoty, je <em>slovník</em>.\nPro příklad si představ překladový slovník, třeba česko-anglický:</p>\n<ul>\n<li><strong>Jablko</strong>: Apple</li>\n<li><strong>Knoflík</strong>: Button</li>\n<li><strong>Myš</strong>: Mouse</li>\n</ul>\n<p>Slovník v Pythonu obsahuje záznamy, a každý záznam přiřazuje\nnějakému <em>klíči</em> nějakou <em>hodnotu</em>.\nV našem příkladu je klíči <em>Jablko</em> přiřazena hodnota <em>Apple</em>,\nklíči <em>Knoflík</em> náleží hodnota <em>Button</em>\na klič <em>Myš</em> ukazuje na <em>Mouse</em>.</p>\n<p>V Pythonu by se takový slovník napsal následovně:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">slovnik</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">'Jablko'</span><span class=\"p\">:</span> <span class=\"s1\">'Apple'</span><span class=\"p\">,</span> <span class=\"s1\">'Knoflík'</span><span class=\"p\">:</span> <span class=\"s1\">'Button'</span><span class=\"p\">,</span> <span class=\"s1\">'Myš'</span><span class=\"p\">:</span> <span class=\"s1\">'Mouse'</span><span class=\"p\">}</span>\n</pre></div><p>Naše klíče a hodnoty jsou slova – krátké texty, tedy řetězce,\nkteré je potřeba dát do uvozovek.\nKlíč a hodnota jsou oddělené dvojtečkou,\njednotlivé dvojice se od sebe oddělují čárkou,\na celý slovník je uzavřený ve složených závorkách.</p>\n<p>Když budeš chtít v takovém slovníku něco najít, potřebuješ vědět co hledat.\nPotřebuješ <em>klíč</em>.\nPomocí hranatých závorek můžeš zjistit hodnotu, která danému klíči odpovídá:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">slovnik</span><span class=\"p\">[</span><span class=\"s1\">'Jablko'</span><span class=\"p\">]</span>\n<span class=\"go\">'Apple'</span>\n</pre></div><p>Je to podobné jako u seznamů, jen v hranatých závorkách není index\n(pořadí prvku) nebo rozmezí s dvojtečkou, ale klíč.</p>\n<div class=\"admonition note\"><p>Naopak to nejde – slovník neumožňuje podle hodnoty přímo zjistit klíč.\nNa překlad z angličtiny do češtiny bys potřebovala druhý slovník.</p>\n</div><h2>Měnění slovníků</h2>\n<p>Co se stane, když klíč ve slovníku není?</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">slovnik</span><span class=\"p\">[</span><span class=\"s1\">'Pes'</span><span class=\"p\">]</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n File <span class=\"nb\">"<stdin>"</span>, line <span class=\"m\">1</span>, in <span class=\"n\"><module></span>\n<span class=\"gr\">KeyError</span>: <span class=\"n\">'Pes'</span>\n</pre></div><p>Python si postěžuje na <code>KeyError</code> – chybu klíče.</p>\n<p>Podobně jako seznamy se ale slovníky dají měnit.\nNový záznam vytvoříš takhle:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">slovnik</span><span class=\"p\">[</span><span class=\"s1\">'Pes'</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">'Dog'</span>\n<span class=\"gp\">>>> </span><span class=\"n\">slovnik</span>\n<span class=\"go\">{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse', 'Pes': 'Dog'}</span>\n</pre></div><div class=\"admonition note\"><p>Na rozdíl od překladového slovníku nemusí být Pythonní slovník seřazený\npodle abecedy.\nNení to potřeba, počítač umí rychle vyhledávat i bez seřazení.</p>\n</div><p>Kdybys potřebovalaa změnit už existující záznam, použij stejný příkaz.\nK jednomu klíči může patřit jen jedna hodnota.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">slovnik</span><span class=\"p\">[</span><span class=\"s1\">'Pes'</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">'Extension cord'</span>\n<span class=\"gp\">>>> </span><span class=\"n\">slovnik</span>\n<span class=\"go\">{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse', 'Pes': 'Extension cord'}</span>\n</pre></div><p>Chceš-li ze zlovníku nějaký záznam smazat, dělá se to podobně jako\nu seznamů příkazem <code>del</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"k\">del</span> <span class=\"n\">slovnik</span><span class=\"p\">[</span><span class=\"s1\">'Pes'</span><span class=\"p\">]</span>\n<span class=\"gp\">>>> </span><span class=\"n\">slovnik</span>\n<span class=\"go\">{'Jablko': 'Apple', 'Knoflík': 'Button', 'Myš': 'Mouse'}</span>\n</pre></div><p>A když budeš chtít zjistit, kolik je ve slovníku záznamů,\nzeptáš se podobně jako na počet znaků řetězce nebo prvků seznamu.\nPoužiješ funkci <code>len()</code>.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">slovnik</span><span class=\"p\">)</span>\n<span class=\"go\">3</span>\n</pre></div><h2>Shrnutí</h2>\n<p>Skvělé! Co víš o slovnících:</p>\n<ul>\n<li><strong>Záznam</strong> se skládá z <strong>klíče</strong> a <strong>hodnoty</strong>.</li>\n<li>Ve slovníku se hledá pomocí <strong>klíče</strong>.</li>\n<li>Záznamy se dají přepsat, přidat, nebo pomocí <code>del</code> smazat.</li>\n</ul>\n<p>Jsi připravena na další část?</p>\n\n\n " } } }