V tomto kurzu se dozvíte vše o slovnících Pythonu; jak jsou vytvářeny, přístup, přidávání, odebírání prvků z nich a různé předdefinované metody.
Video: Slovníky Pythonu pro ukládání párů klíč / hodnota
Slovník Pythonu je neuspořádaná sbírka položek. Každá položka slovníku má key/valuepár.
Slovníky jsou optimalizovány pro načítání hodnot, když je klíč znám.
Vytváření slovníku Python
Vytvoření slovníku je stejně jednoduché jako umísťování položek do složených závorek ()oddělených čárkami.
Položka má a keya odpovídající, valuekterý je vyjádřen jako pár ( klíč: hodnota ).
Zatímco hodnoty mohou být jakéhokoli datového typu a mohou se opakovat, klíče musí být neměnného typu (řetězec, číslo nebo n-tice s neměnnými prvky) a musí být jedinečné.
 # empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Jak vidíte shora, můžeme také vytvořit slovník pomocí vestavěné dict()funkce.
Přístup k prvkům ze slovníku
Zatímco indexování se používá s jinými datovými typy pro přístup k hodnotám, používá slovník keys. Klíče lze použít buď uvnitř hranatých závorek, ()nebo get()metodou.
Použijeme-li hranaté závorky (), KeyErrorje zvýšeno v případě, že klíč ve slovníku nebyl nalezen. Na druhou stranu se get()metoda vrátí, Nonepokud klíč nebyl nalezen.
 # get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Výstup
 Jack 26 Žádný Traceback (poslední hovor poslední): Soubor "", řádek 15, v tisku (my_dict ('address')) KeyError: 'address' 
Změna a přidání prvků slovníku
Slovníky jsou proměnlivé. Můžeme přidat nové položky nebo změnit hodnotu stávajících položek pomocí operátoru přiřazení.
Pokud je klíč již přítomen, bude aktualizována stávající hodnota. V případě, že klíč není k dispozici, je do slovníku přidán nový pár ( klíč: hodnota ).
 # Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Výstup
 ('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown') 
Odebrání prvků ze slovníku
Pomocí pop()metody můžeme odebrat konkrétní položku ve slovníku . Tato metoda odebere položku s poskytnutou keya vrátí value.
popitem()Metoda může být použita k odstranění a vrátit libovolný (key, value)pár položky ze slovníku. Pomocí této clear()metody lze odstranit všechny položky najednou .
Můžeme také použít delklíčové slovo k odstranění jednotlivých položek nebo celého samotného slovníku.
 # Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Výstup
16 (1: 1, 2: 4, 3: 9, 5:25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (poslední hovor poslední): Soubor "", řádek 30, v tisku (čtverce) NameError: název 'squares' není definován
Metody slovníku Pythonu
Níže jsou uvedeny metody, které jsou k dispozici se slovníkem. Některé z nich již byly použity ve výše uvedených příkladech.
| Metoda | Popis | 
|---|---|
| Průhledná() | Odebere všechny položky ze slovníku. | 
| kopírovat() | Vrátí mělkou kopii slovníku. | 
| fromkeys (seq (, v)) | Vrátí nový slovník s klíči od seq a hodnotou rovnou v (výchozí None). | 
| get (klíč (, d)) | Vrátí hodnotu klíče. Pokud klíč neexistuje, vrátí d (výchozí None). | 
| položky () | Vrátí nový objekt položek slovníku ve formátu (klíč, hodnota). | 
| klávesy () | Vrátí nový objekt klíčů slovníku. | 
| pop (klávesa (, d)) | Odebere položku pomocí klíče a vrátí jeho hodnotu nebo d, pokud klíč nebyl nalezen. Pokud d není zadáno a klíč nebyl nalezen, vyvolá se KeyError. | 
| popitem () | Odebere a vrátí libovolnou položku ( klíč, hodnotu ). Vyvolá se, KeyErrorpokud je slovník prázdný. | 
| setdefault (klíč (, d)) | Vrátí odpovídající hodnotu, pokud je klíč ve slovníku. Pokud ne, vloží klíč s hodnotou d a vrátí d (výchozí None). | 
| aktualizovat ((jiné)) | Aktualizuje slovník dvojicemi klíč / hodnota z jiných, přepisuje existující klíče. | 
| hodnoty () | Vrátí nový objekt hodnot slovníku | 
Zde je několik příkladů použití těchto metod.
 # Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Výstup
 ('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Věda') 
Porozumění slovníku Python
Porozumění slovníku je elegantní a výstižný způsob, jak vytvořit nový slovník z iterovatelného jazyka v Pythonu.
Porozumění slovníku se skládá z dvojice výrazů ( klíč: hodnota ) následovaných forpříkazem uvnitř složených závorek ().
Zde je příklad vytvoření slovníku, kde každá položka je dvojicí čísla a jeho čtverce.
 # Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Výstup
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5:25)
Tento kód je ekvivalentní s
 squares = () for x in range(6): squares(x) = x*x print(squares)
Výstup
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5:25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
 # Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key is in a dictionary or not using the keyword in. Notice that the membership test is only for the keys and not for the values.
 # Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for loop.
 # Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Vestavěné funkce, jako all(), any(), len(), cmp(), sorted(), atd. Jsou běžně používány s slovníky plnit různé úkoly.
| Funkce | Popis | 
|---|---|
| Všechno() | Návrat, Truepokud jsou všechny klávesy slovníku True (nebo pokud je slovník prázdný). | 
| žádný() | Vraťte se, Truepokud je některý klíč slovníku pravdivý. Pokud je slovník prázdný, vraťte seFalse. | 
| len () | Vrátí délku (počet položek) ve slovníku. | 
| cmp () | Porovná položky dvou slovníků. (Není k dispozici v Pythonu 3) | 
| seřazeno () | Vrátit nový seřazený seznam klíčů ve slovníku. | 
Zde je několik příkladů, které používají integrované funkce pro práci se slovníkem.
 # Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Výstup
False True 6 (0, 1, 3, 5, 7, 9)








