Krajta

Python defaultdict

Python defaultdict

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íku
my_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 kolekce
ze 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 kolekce
ze 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 kolekce
ze 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 kolekce
ze 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 kolekce
ze 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.

Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...
Hry SuperTuxKart pro Linux
SuperTuxKart pro Linux
SuperTuxKart je skvělý titul navržený tak, aby vám ve vašem systému Linux přinesl zážitek Mario Kart zdarma. Je to docela náročné a zábavné hrát, je n...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
The Battle for Wesnoth je jednou z nejpopulárnějších strategických her s otevřeným zdrojovým kódem, které si v tuto chvíli můžete zahrát. Tato hra se ...