Slovník v Pythonu je neuspořádaná kolekce datových hodnot, které se používají k ukládání datových hodnot jako mapa. Na rozdíl od jiných datových typů, které obsahují pouze jednu hodnotu jako prvek, slovník obsahuje pár klíč-hodnota. Ve Slovníku musí být klíč jedinečný a neměnný. To znamená, že Python Tuple může být klíčem, zatímco Python List nikoli. Slovník lze vytvořit umístěním sekvence prvků do složených {} závorek, oddělených ‚čárkou‘.
Příklad:
Python3
numpy linspace
# Python program to demonstrate> # dictionary> > > Dict> => {>1>:>'Geeks'>,>2>:>'For'>,>3>:>'Geeks'>}> print>(>'Dictionary:'>)> print>(>Dict>)> print>(>Dict>[>1>])> > # Uncommenting this print(Dict[4])> # will raise a KeyError as the> # 4 is not present in the dictionary> |
>
>
Výstup:
Dictionary: {1: 'Geeks', 2: 'For', 3: 'Geeks'} Geeks> Traceback (most recent call last): File '/home/1ca83108cc81344dc7137900693ced08.py', line 11, in print(Dict[4]) KeyError: 4>
Někdy, když se objeví KeyError, může to být problém. K překonání tohoto Python zavádí další slovník, jako je kontejner známý jako Výchozí diktát který se nachází uvnitř modulu sbírek.
Poznámka: Další informace viz Slovník Pythonu .
DefaultDict
Výchozí diktát je jako kontejner slovníky přítomný v modulu sbírky . Defaultdict je podtřída třídy dictionary, která vrací objekt podobný slovníku. Funkčnost slovníků i defaultdict je téměř stejná, až na to, že defaultdict nikdy nevyvolá chybu KeyError. Poskytuje výchozí hodnotu pro klíč, který neexistuje.
Syntax: defaultdict(default_factory)
Parametry:default_factory: Funkce vracející výchozí hodnotu pro definovaný slovník. Pokud tento argument chybí, pak slovník vyvolá KeyError.
Příklad:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Function to return a default> # values for keys that is not> # present> def> def_value():> >return> 'Not Present'> > # Defining the dict> d>=> defaultdict(def_value)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])> |
>
>
Výstup:
1 2 Not Present>
Vnitřní fungování defaultdiktu
Defaultdict přidává jednu zapisovatelnou proměnnou instance a jednu metodu navíc ke standardním operacím se slovníkem. Proměnná instance je parametr default_factory a poskytnutá metoda je __missing__.
- Default_factory: Je to funkce, která vrací výchozí hodnotu pro definovaný slovník. Pokud tento argument chybí, pak slovník vyvolá KeyError.
Příklad:
Python3
# Python program to demonstrate> # default_factory argument of> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict and passing> # lambda as default_factory argument> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])> |
>
>
Výstup:
1 2 Not Present>
- __missing__(): Tato funkce se používá k poskytnutí výchozí hodnoty pro slovník. Tato funkce bere default_factory jako argument a pokud je tento argument None, vyvolá se KeyError, jinak poskytuje výchozí hodnotu pro daný klíč. Tato metoda je v podstatě volána metodou __getitem__() třídy dict, když není nalezen požadovaný klíč. __getitem__() zvýší nebo vrátí hodnotu vrácenou funkcí __missing__(). metoda.
Příklad:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > # Provides the default value> # for the key> print>(d.__missing__(>'a'>))> print>(d.__missing__(>'d'>))> |
>
>
Výstup:
Not Present Not Present>
Použití seznamu jako default_factory
Když je třída list předána jako argument default_factory, vytvoří se defaultdict s hodnotami, které jsou list.
Příklad:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining a dict> d>=> defaultdict(>list>)> > for> i>in> range>(>5>):> >d[i].append(i)> > print>(>'Dictionary with values as list:'>)> print>(d)> |
>
seznam států
>
Výstup:
Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})> Použití int jako default_factory
Když je třída int předána jako argument default_factory, vytvoří se defaultdict s výchozí hodnotou nula.
Příklad:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>int>)> > L>=> [>1>,>2>,>3>,>4>,>2>,>4>,>1>,>2>]> > # Iterate through the list> # for keeping the count> for> i>in> L:> > ># The default value is 0> ># so there is no need to> ># enter the key first> >d[i]>+>=> 1> > print>(d)> |
>
>
Výstup:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>