Python ponúka mnoho vstavaných dátových štruktúr, ako sú zoznamy, n-tice a slovníky, ktoré umožňujú efektívne ukladať a spravovať údaje. Slovníky poskytujú jednoduchý spôsob ukladania údajov ako párov kľúč - hodnota. Kľúč slúži ako index a slúži na načítanie údajov. Kľúče by mali byť jedinečné a nemenné v celom slovníku. Kľúče sú väčšinou reťazce a celé čísla, hoci hodnota kľúča môže byť ľubovoľného typu, napríklad celé číslo, reťazec, číslo s pohyblivou rádovou čiarkou alebo komplexné číslo. Slovník zatiaľ môže obsahovať zbierku, napríklad zoznam, n-ticu alebo iný typ slovníka. Slovník v Pythone je vytvorený pomocou dvojice zložených zátvoriek, v ktorých je každý pár kľúč - hodnota oddelený čiarkou.
Čo ak sa pokúsite získať prístup alebo upraviť konkrétny kľúč v slovníku, ktorý neexistuje? V tomto prípade interpret Pythonu vyvolá chybu „KeyError“ a ukončí vykonávanie programu.
Pozrime sa na príklad chyby „KeyError“.
#vytvorenie slovníkamy_dict = 1: "Dobrý deň", 2: "Vitajte", 3: "LinuxHint"
# prístup ku kľúču, ktorý neexistuje
my_dict [4]
Výkon
Na zvládnutie tejto chyby poskytuje Python typ defaultdict, triedu slovníka, ktorú nájdete v module kolekcie. Tento článok sa podrobne zaoberá predvoleným nastavením Pythonu.
Vysvetlenie a príklady predvoleného rozsudku
Defaultdict je alternatívou slovníka Python. Vráti objekty typu slovníka. Defaultdict je podtrieda dict. V prípade chýbajúceho kľúča sa namiesto výskytu chyby „KeyError“ poskytuje predvolená hodnota pre neexistujúci kľúč. Syntax defaultdict je nasledovná:
defaultdict (default_factory)Funkcia defaultdict berie parameter argument default_factory ako argument. Funkcia default_factory vráti predvolenú hodnotu pre definovaný defaultdict. Ak sa pokúsime získať prístup alebo upraviť kľúč, ktorý chýba, funkcia default_factory vráti ako výsledok predvolenú hodnotu. Ak funkcia default_factory chýba, potom defaultdic spôsobí chybu „KeyError“, ak chýbajú nejaké kľúče.
Najskôr v našom skripte Python implementujeme defaultdic na prístup k existujúcim aj chýbajúcim kľúčom.
#importujte predvolenýdát z modulu zhromažďovaniazo zbierok importovať defaultdict
# definovanie funkcie na vrátenie predvolenej hodnoty
def my_func ():
print ("Kľúč nie je definovaný")
#vytvorenie sporu
#passing the my_func () ako argument defaultdict
my_dict = defaultdict (my_func)
# definovanie kľúčov a hodnôt
my_dict [1] = "Dobrý deň"
my_dict [2] = "Vitajte"
my_dict [3] = "LinuxHint"
# prístup k hodnotám pomocou klávesov
tlač (my_dict [1])
tlač (my_dict [2])
tlač (my_dict [3])
# prístup k chýbajúcemu alebo nedefinovanému kľúču
my_dict [4]
Výkon
[4] chýba kľúč. Namiesto chyby „KeyError“ teda zavolá funkciu default_factory, ktorá vráti predvolenú hodnotu.
Ako parameter default_factory sa dá použiť aj funkcia lambda známa ako anonymná funkcia.
Ďalej implementujeme funkciu lambda a odovzdáme ju ako argument defaultdict.
#importujte predvolenýdát z modulu zhromažďovaniazo zbierok importovať defaultdict
#vytvorenie sporu
#posunutie funkcie Lamnda ako argument k predvolenému diktátu
my_dict = defaultdict (lambda: "Kľúč nie je definovaný")
# definovanie kľúčov a hodnôt
my_dict [1] = "Dobrý deň"
my_dict [2] = "Vitajte"
my_dict [3] = "LinuxHint"
# prístup k hodnotám pomocou klávesov
tlač (my_dict [1])
tlač (my_dict [2])
tlač (my_dict [3])
# prístup k chýbajúcemu alebo nedefinovanému kľúču
tlač (my_dict [4])
Defaultdict volá default_factory na poskytnutie predvolenej hodnoty, ale funkcia __missing () __ poskytuje predvolenú hodnotu. Funkcia __missing () __ je vstavaná funkcia v Pythone, ktorá berie argument argument default_factory. Ak nie je definovaný parameter default_factory, funkcia __missing () __ vyvolá chybu „KeyError“.
Tu použijeme funkciu __missing () __ v našom skripte Python.
#importujte predvolenýdát z modulu zhromažďovaniazo zbierok importovať defaultdict
# definovanie funkcie na vrátenie predvolenej hodnoty
def my_func ():
print ("Kľúč nie je definovaný")
#vytvorenie sporu
#passing the my_func () ako argument defaultdict
my_dict = defaultdict (my_func)
# definovanie kľúčov a hodnôt
my_dict [1] = "LinuxHint"
# prístup k hodnotám pomocou klávesov
tlač (my_dict [1])
# prístup k chýbajúcemu alebo nedefinovanému kľúču
my_dict.__ Missing __ (2)
Výkon
Zoznam a triedy int je možné použiť aj ako parametre default_factory s parametrom defaultdict.
Zoznam ako parameter default_factory
Defaultdict sa vytvorí s hodnotami zoznamu, keď sa triede zoznamu odovzdá parameter default_factory.
#importujte predvolenýdát z modulu zhromažďovaniazo zbierok importovať defaultdict
# definovanie predvoleného rozsudku
# absolvovanie triedy zoznamu ako default_factory
my_dict = defaultdict (zoznam)
pre i v rozsahu (7):
my_dict [i].pridať (i)
#tlač hodnôt
print (my_dict)
Výkon
Výstup zobrazuje hodnoty v zozname. Ako vidíte, bol vytvorený defaultdict, ktorý obsahuje kľúč a hodnoty.
Celé čísla ako parameter default_factory
Ak triedu int odovzdáme ako parameter default_factory, môžeme vytvoriť defaultdict, ktorý obsahuje iba celé čísla. Vytvoríme zoznam celých čísel a potom ho uložíme na predvolený názor.
#importujte predvolenýdát z modulu zhromažďovaniazo zbierok importovať defaultdict
# definovanie predvoleného rozsudku
# absolvovanie triedy int ako default_factory
my_dict = defaultdict (int)
#vytvorenie zoznamu celých čísel
my_list = [1,2,3]
pre i v mojom zozname:
my_dict [i] + = 1
#tlač hodnôt
print (my_dict)
Výkon
V danom výstupe sú celočíselné hodnoty pred dvojbodkou (:) kľúčmi, zatiaľ čo celočíselné hodnoty za dvojbodkou sú hodnoty.
Záver
Dafualtdict je trieda podobná slovníku prítomná v module zbierok. Funguje to ako slovník v jazyku Python, ale nevyvolá chybu „KeyError“, ak sa kľúč nenájde. Tento článok podrobne vysvetľuje predvolené nastavenie pomocou rôznych príkladov.