V tomto výučbe sa dozviete všetko o slovníkoch Python; ako sú vytvárané, prístup, pridávanie, odstraňovanie prvkov z nich a rôzne vstavané metódy.
Video: Slovníky Pythonu na ukladanie párov kľúč / hodnota
Slovník Python je neusporiadaná zbierka položiek. Každá položka slovníka má key/value
pár.
Slovníky sú optimalizované na načítanie hodnôt, keď je kľúč známy.
Vytváranie slovníka Python
Vytvorenie slovníka je také jednoduché ako vkladanie položiek do zložených zátvoriek ()
oddelených čiarkami.
Položka má a key
a korešpondenciu, value
ktorá je vyjadrená ako pár ( kľúč: hodnota ).
Aj keď hodnoty môžu byť ľubovoľného typu údajov a môžu sa opakovať, kľúče musia byť nemenného typu (reťazec, číslo alebo n-tica s nemennými prvkami) a musia byť 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')))
Ako vidíte zhora, slovník môžeme vytvoriť aj pomocou vstavanej dict()
funkcie.
Prístup k prvkom zo slovníka
Zatiaľ čo sa indexovanie používa s inými typmi údajov na prístup k hodnotám, používa sa slovník keys
. Kľúče je možné použiť buď vo vnútri hranatých zátvoriek ()
alebo pomocou tejto get()
metódy.
Ak použijeme hranaté zátvorky ()
, znak KeyError
sa zdvihne, ak sa nenájde kľúč v slovníku. Na druhej strane sa get()
metóda vráti, None
ak sa kľúč nenájde.
# 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ýkon
Jack 26 Žiadny Traceback (posledný posledný hovor): Súbor "", riadok 15, v tlačenej podobe (my_dict ('address')) KeyError: 'address'
Zmena a pridanie prvkov slovníka
Slovníky sú premenlivé. Pomocou operátora priradenia môžeme pridať nové položky alebo zmeniť hodnotu existujúcich položiek.
Ak je kľúč už prítomný, aktualizuje sa existujúca hodnota. Ak kľúč nie je k dispozícii, do slovníka sa pridá nový pár ( kľúč: 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ýkon
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Odstraňujú sa prvky zo slovníka
Pomocou tejto pop()
metódy môžeme odstrániť konkrétnu položku v slovníku . Táto metóda odstráni položku s poskytnutým key
údajom a vráti value
.
Túto popitem()
metódu je možné použiť na odstránenie a vrátenie ľubovoľného (key, value)
páru položiek zo slovníka. Týmto spôsobom je možné odstrániť všetky položky naraz clear()
.
del
Kľúčové slovo môžeme použiť aj na odstránenie jednotlivých položiek alebo celého samotného slovníka.
# 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ýkon
16 (1: 1, 2: 4, 3: 9, 5:25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (posledný hovor naposledy): Súbor „“, riadok 30, v tlači (štvorce) Chyba chyby: názov „štvorce“ nie je definovaný
Metódy slovníka Python
Metódy, ktoré sú k dispozícii so slovníkom, sú uvedené v tabuľke nižšie. Niektoré z nich už boli použité vo vyššie uvedených príkladoch.
Metóda | Popis |
---|---|
jasný() | Odstráni všetky položky zo slovníka. |
copy () | Vráti plytkú kópiu slovníka. |
fromkeys (seq (, v)) | Vráti nový slovník s kľúčmi od seq a hodnotou rovnou v (predvolené nastavenie je None ). |
get (kľúč (, d)) | Vráti hodnotu kľúča. Ak kľúč neexistuje, vráti d (predvolené nastavenie None ). |
položky () | Vrátiť nový objekt položiek slovníka vo formáte (kľúč, hodnota). |
klávesy () | Vráti nový objekt klávesov slovníka. |
pop (klávesa (, d)) | Odstráni položku pomocou kľúča a vráti jeho hodnotu alebo d, ak kľúč nenájdete. Ak d nie je uvedené a kľúč sa nenájde, zdvihne sa KeyError . |
popitem () | Odstráni a vráti ľubovoľnú položku ( kľúč, hodnotu ). Vyvolá sa, KeyError ak je slovník prázdny. |
setdefault (klávesa (, d)) | Vráti zodpovedajúcu hodnotu, ak je kľúč v slovníku. Ak nie, vloží kľúč s hodnotou d a vráti d (predvolené nastavenie None ). |
aktualizovať ((ďalšie)) | Aktualizuje slovník dvojicami kľúč / hodnota z iných, prepisuje existujúce kľúče. |
hodnoty () | Vráti nový objekt hodnôt slovníka |
Tu je niekoľko príkladov použitia týchto metód.
# 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ýkon
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Veda “)
Pochopenie slovníka Python
Porozumenie slovníka je elegantný a výstižný spôsob, ako vytvoriť nový slovník z iterovateľného súboru v jazyku Python.
Porozumenie slovníka pozostáva z dvojice výrazov ( kľúč: hodnota ), za ktorou nasleduje for
vyhlásenie vo vnútri zložených zátvoriek ()
.
Tu je príklad na vytvorenie slovníka, kde každá položka je dvojica čísla a jeho štvorec.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Výkon
(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ýkon
(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
Vstavané funkcie, ako all()
, any()
, len()
, cmp()
, sorted()
, atď. Sú bežne používané s slovníkmi plniť rôzne úlohy.
Funkcia | Popis |
---|---|
všetko () | Vráťte sa, True ak sú všetky klávesy slovníka pravdivé (alebo ak je slovník prázdny). |
akýkoľvek() | Vrátiť, True ak je ktorákoľvek klávesa zo slovníka pravdivá. Ak je slovník prázdny, vráťte sa False . |
len () | Vráti dĺžku (počet položiek) v slovníku. |
cmp () | Porovnáva položky dvoch slovníkov. (Nie je k dispozícii v Pythone 3) |
zoradené () | Vrátiť nový zoradený zoznam klávesov v slovníku. |
Tu je niekoľko príkladov, ktoré používajú vstavané funkcie na prácu so slovníkom.
# 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ýkon
False True 6 (0, 1, 3, 5, 7, 9)