Defaultdict în Python

Dicţionar în Python este o colecție neordonată de valori de date care sunt folosite pentru a stoca valorile datelor ca o hartă. Spre deosebire de alte tipuri de date care conțin doar o singură valoare ca element, Dicționarul conține pereche cheie-valoare. În Dicționar, cheia trebuie să fie unică și imuabilă. Aceasta înseamnă că un tuplu Python poate fi o cheie, în timp ce o listă Python nu poate. Un dicționar poate fi creat prin plasarea unei secvențe de elemente în acolade {}, separate prin „virgulă”.

Exemplu:

Python3




# 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>

Ieșire:

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 

Uneori, când apare KeyError, aceasta poate deveni o problemă. Pentru a depăși acest lucru, Python introduce un alt dicționar precum container cunoscut sub numele Defaultdict care este prezent în interiorul modulului de colecții.
Notă: Pentru mai multe informații, consultați Dicţionar Python .

DefaultDict

Defaultdict este un recipient ca dicționare prezente în modul colecții . Defaultdict este o subclasă a clasei dicționar care returnează un obiect asemănător dicționarului. Funcționalitatea ambelor dicționare și a defaultdict este aproape aceeași, cu excepția faptului că defaultdict nu generează niciodată o KeyError. Oferă o valoare implicită pentru cheie care nu există.

Sintaxă: defaultdict(default_factory)
Parametri:

    default_factory: O funcție care returnează valoarea implicită pentru dicționarul definit. Dacă acest argument este absent, atunci dicționarul generează o KeyError.

Exemplu:

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'> ])>

Ieșire:

1 2 Not Present 

Funcționarea internă a defaultdict

Defaultdict adaugă o variabilă de instanță care poate fi scrisă și o metodă în plus față de operațiile standard ale dicționarului. Variabila de instanță este parametrul default_factory și metoda furnizată este __missing__.

    Default_factory: este o funcție care returnează valoarea implicită pentru dicționarul definit. Dacă acest argument este absent, atunci dicționarul generează o KeyError.
    Exemplu:

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'> ])>

Ieșire:

1 2 Not Present 
    __missing__(): Această funcție este folosită pentru a furniza valoarea implicită pentru dicționar. Această funcție ia default_factory ca argument și dacă acest argument este None, este generată o KeyError, altfel furnizează o valoare implicită pentru cheia dată. Această metodă este numită practic de metoda __getitem__() a clasei dict atunci când cheia solicitată nu este găsită. __getitem__() ridică sau returnează valoarea returnată de __missing__(). metodă.
    Exemplu:

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'> ))>

Ieșire:

Not Present Not Present 

Folosind Listă ca default_factory

Când clasa listă este transmisă ca argument default_factory, atunci este creat un defaultdict cu valorile care sunt listă.
Exemplu:

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)>

Ieșire:

Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]}) 

Folosind int ca default_factory

Când clasa int este transmisă ca argument default_factory, atunci este creat un defaultdict cu valoarea implicită zero.
Exemplu:

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)>

Ieșire:

defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})