Slovník Pythonu (s příklady)

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 se False.
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)

Zajímavé články...