Python nabízí mnoho předdefinovaných datových struktur, jako jsou seznamy, n-tice a slovníky, pro efektivní ukládání a správu dat. Slovníky poskytují snadný způsob, jak ukládat data jako páry klíč – hodnota. Klíč funguje jako index a slouží k načtení dat. Klíče by měly být v celém slovníku jedinečné a neměnné. Klíče jsou většinou řetězce a celá čísla, i když hodnota klíče může být jakéhokoli typu, například celé číslo, řetězec, číslo s plovoucí desetinnou čárkou nebo komplexní číslo. Mezitím slovník může obsahovat kolekci, jako je seznam, n-tice nebo nějaký jiný typ slovníku. Slovník v Pythonu je vytvořen pomocí dvojice složených závorek, ve kterých je každý pár klíč – hodnota oddělen čárkou.
Co když se pokusíte získat přístup nebo upravit konkrétní klíč ve slovníku, který neexistuje? V tomto případě překladač Pythonu vyvolá chybu „KeyError“ a ukončí provádění programu.
Podívejme se na příklad chyby „KeyError“.
#vytvoření slovníkumy_dict = 1: "Hello", 2: "Welcome", 3: "LinuxHint"
# přístup ke klíči, který neexistuje
my_dict [4]
Výstup
Ke zpracování této chyby poskytuje Python typ defaultdict, třídu slovníku, kterou najdete v modulu sbírky. Tento článek podrobně popisuje výchozí Python.
Vysvětlení a příklady defaultdict
Defaultdict je alternativou slovníku Pythonu. Vrátí objekty typu slovníku. Defaultdict je podtřída dict. V případě chybějícího klíče je místo neexistující chyby „KeyError“ uvedena výchozí hodnota pro neexistující klíč. Syntaxe defaultdict je následující:
defaultdict (default_factory)Funkce defaultdict bere parametr argument default_factory jako argument. Funkce default_factory vrací výchozí hodnotu pro definovaný defaultdict. Pokud se pokusíme získat přístup nebo upravit klíč, který chybí, vrátí funkce default_factory výchozí hodnotu jako výsledek. Pokud funkce default_factory chybí, pak defaultdic vyvolá chybu „KeyError“, pokud nějaké klíče chybí.
Nejprve v našem skriptu Pythonu implementujeme defaultdic pro přístup ke stávajícím i chybějícím klíčům.
#importujte defaultdict z modulu kolekceze sbírek importovat defaultdict
# definování funkce pro vrácení výchozí hodnoty
def my_func ():
tisk ("Klíč není definován")
#vytvoření defualtdict
#passing my_func () jako argument defaultdict
my_dict = defaultdict (my_func)
# definování klíčů a hodnot
my_dict [1] = "Dobrý den"
my_dict [2] = "Vítejte"
my_dict [3] = "LinuxHint"
# přístup k hodnotám pomocí kláves
tisk (my_dict [1])
tisk (my_dict [2])
tisk (my_dict [3])
# přístup k chybějícímu nebo nedefinovanému klíči
my_dict [4]
Výstup
[4] je chybějící klíč. Takže místo vyvolání chyby „KeyError“ volá funkci default_factory, která vrátí výchozí hodnotu.
Jako parametr default_factory lze také použít funkci lambda, známou jako anonymní funkce.
Dále implementujeme funkci lambda a předáme ji jako argument defaultdict.
#importujte defaultdict z modulu kolekceze sbírek importovat defaultdict
#creating a defualtdict
# předání funkce Lamnda jako argument defaultdict
my_dict = defaultdict (lambda: "Klíč není definován")
# definování klíčů a hodnot
my_dict [1] = "Dobrý den"
my_dict [2] = "Vítejte"
my_dict [3] = "LinuxHint"
# přístup k hodnotám pomocí kláves
tisk (my_dict [1])
tisk (my_dict [2])
tisk (my_dict [3])
# přístup k chybějícímu nebo nedefinovanému klíči
tisk (my_dict [4])
Výchozí hodnota volá default_factory, aby poskytla výchozí hodnotu, ale funkce __missing () __ poskytuje výchozí hodnotu. Funkce __missing () __ je vestavěná funkce v Pythonu, která bere parametr argument default_factory jako argument. Pokud parametr default_factory není definován, funkce __missing () __ vyvolá chybu „KeyError“.
Zde použijeme funkci __missing () __ v našem skriptu Pythonu.
#importujte defaultdict z modulu kolekceze sbírek importovat defaultdict
# definování funkce pro vrácení výchozí hodnoty
def my_func ():
tisk ("Klíč není definován")
#vytvoření defualtdict
#passing my_func () jako argument defaultdict
my_dict = defaultdict (my_func)
# definování klíčů a hodnot
my_dict [1] = "LinuxHint"
# přístup k hodnotám pomocí kláves
tisk (my_dict [1])
# přístup k chybějícímu nebo nedefinovanému klíči
my_dict.__ Missing __ (2)
Výstup
Seznam a třídy int lze také použít jako parametry default_factory s defaultdict.
Seznam jako parametr default_factory
Při předání třídy seznamu parametr default_factory je vytvořen defaultdict s hodnotami seznamu.
#importujte defaultdict z modulu kolekceze sbírek importovat defaultdict
# definování defaultdict
# předání třídy seznamu jako default_factory
my_dict = defaultdict (seznam)
pro i v rozsahu (7):
my_dict [i].připojit (i)
# tisk hodnot
tisk (my_dict)
Výstup
Výstup zobrazuje hodnoty v seznamu. Jak vidíte, byl vytvořen defaultdict, který obsahuje klíč a hodnoty.
Celá čísla jako parametr default_factory
Pokud předáme třídu int jako parametr default_factory, můžeme vytvořit defaultdict, který obsahuje pouze celá čísla. Vytvoříme seznam celých čísel a poté jej uložíme do výchozího nastavení.
#importujte defaultdict z modulu kolekceze sbírek importovat defaultdict
# definování výchozího rozhodnutí
# předání třídy int jako default_factory
my_dict = defaultdict (int)
# vytvoření seznamu celých čísel
my_list = [1,2,3]
pro i v my_list:
my_dict [i] + = 1
# tisk hodnot
tisk (my_dict)
Výstup
V daném výstupu jsou celočíselné hodnoty před dvojtečkou (:) klíče, zatímco celočíselné hodnoty za dvojtečkou jsou hodnoty.
Závěr
Dafualtdict je třída podobná slovníku přítomná v modulu sbírek. Funguje jako slovník v Pythonu, ale nevyvolá „KeyError“, pokud klíč nebyl nalezen. Tento článek podrobně vysvětluje defaultdict s různými příklady.