logo

Defaultdict în Python

Dicționarul este o colecție neordonată de valori de date în Python, utilizată pentru stocarea valorilor de date, cum ar fi hărți. Dicționarul conține perechi cheie-valoare în loc să dețină o singură valoare ca element ca și alte tipuri de date. Cheia implementată în dicționar trebuie să fie unică și imuabilă. Adică, tuplul Python poate fi o cheie, dar lista Python nu poate fi o cheie în dicționar. Putem crea un dicționar plasând o secvență de elemente în interiorul parantezelor {}, o virgulă „,” poate separa valorile.

Exemplul 1:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 1: ', Dict_1[1]) print ('key pair 3: ', Dict_1[3]) 

Ieșire:

 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C 

Dar dacă încercăm să tipărim a 5-a valoare cheie atunci, vom primi eroarea deoarece „Dict_1” nu conține a 5-a valoare cheie.

Exemplul 2:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5]) 

Ieșire:

 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} --------------------------------------------------------------------------- KeyError Traceback (most recent call last) in 2 print ('Dictionary: ') 3 print (Dict_1) ----> 4 print ('key pair 5: ', Dict_1[5]) KeyError: 5 

Ori de câte ori keyError este ridicată, poate deveni o problemă pentru utilizatori. Putem depăși această eroare folosind un alt dicționar de Python, care este ca un container cunoscut ca Defaultdict . Utilizatorii pot găsi acest dicționar în interiorul 'colecții' modul.

defaultdict

Defaultdict este un dicționar de Python, care este ca un container prezent în modulul „colecții”. Este o subclasă a clasei dicționar care este folosită pentru returnarea obiectului asemănător dicționarului. Atât defaultdict, cât și dicționarul au aceeași funcționalitate, cu excepția faptului că defaultdict nu generează niciodată KeyError, deoarece oferă o valoare implicită pentru Cheie, care nu există în dicționarul creat de utilizator.

descărcare sts

Sintaxă:

 defaultdict(default_factory) 

Parametri:

    default_factory:Funcția default_factory() returnează valoarea implicită setată de utilizator pentru dicționarul definit de acesta. Dacă acest argument este absent, atunci dicționarul va genera KeyError.

Exemplu:

comenzi rapide linux
 from collections import defaultdict as DD # Function for returning a default values for the # keys which are not present in the dictionary def default_value(): return 'This key is not present' # Now, we will define the dict dict_1 = DD(default_value) dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key pair 1: ', dict_1['ABC']) print ('key pair 3: ', dict_1['GHI']) print ('key pair 5: ', dict_1['MNO']) 

Ieșire:

 Dictionary: defaultdict(, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key pair 1: 1 key pair 3: 3 key pair 5: This key is not present 

Funcționarea internă a defaultdict

Când folosim defaultdict, obținem o variabilă de instanță suplimentară care poate fi scrisă și o metodă în plus față de operațiile standard din dicționar. Variabila de instanță care poate fi scrisă este parametrul default_factory și __dispărut__ este metoda.

    default_factory:Funcția default_factory() returnează valoarea implicită setată de utilizator pentru dicționarul definit de acesta.

Exemplu:

 from collections import defaultdict as DD dict_1 = DD(lambda: 'This key is not present') dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key value 1: ', dict_1['ABC']) print ('key value 3: ', dict_1['GHI']) print ('key value 5: ', dict_1['MNO']) 

Ieșire:

 Dictionary: defaultdict(<function at 0x0000019efc4b58b0>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: 1 key value 3: 3 key value 5: This key is not present </function>
    __dispărut__():Funcția __missing__() este utilizată pentru a furniza valoarea implicită dicționarului. Funcția __missing__() ia default_factory ca argument, iar dacă argumentul este setat la None, se va genera o KeyError; în caz contrar, va furniza o valoare implicită pentru cheia dată. Această metodă este numită în esență de către __getitem__() funcția clasei dict atunci când cheia solicitată nu este găsită. Funcția __getitem__() ridică sau returnează valoarea care este prezentă în funcția __missing__().

Exemplu:

 from collections import defaultdict as DD dict_1 = DD(lambda: &apos;This key is not present&apos;) dict_1[&apos;ABC&apos;] = 1 dict_1[&apos;DEF&apos;] = 2 dict_1[&apos;GHI&apos;] = 3 dict_1[&apos;JKL&apos;] = 4 print (&apos;Dictionary: &apos;) print (dict_1) print (&apos;key value 1: &apos;, dict_1.__missing__(&apos;ABC&apos;)) print (&apos;key value 4: &apos;, dict_1[&apos;JKL&apos;]) print (&apos;key value 5: &apos;, dict_1.__missing__(&apos;MNO&apos;)) 

Ieșire:

convertiți un int în șir c++
 Dictionary: defaultdict(<function at 0x0000019efc4b5670>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: This key is not present key value 4: 4 key value 5: This key is not present </function>

Cum să utilizați „Lista” ca default_factory

Putem trece o clasă listă ca argument default_factory și va crea un defaultdict cu valorile care sunt setate în format listă.

Exemplu:

 from collections import defaultdict as DD # Defining a dictionary dict_1 = DD(list) for k in range(7, 12): dict_1[k].append(k) print (&apos;Dictionary with values as list:&apos;) print (dict_1) 

Ieșire:

 Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]}) 

Cum să utilizați „int” ca default_factory

Putem trece clasa int ca argument default_factory și va crea un defaultdict cu valoarea implicită setată la zero.

Exemplu:

 from collections import defaultdict as DD # Defining the dict dict_1 = DD(int) J = [1, 2, 3, 4, 2, 4, 1, 2] # Now, we will iterate through the list &apos;J&apos; # for keeping the count for k in J: # As, The default value is 0 # so we do not need to # enter the key first dict_1[k] += 1 print(dict_1) 

Ieșire:

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

Concluzie

În acest tutorial, am discutat despre defaultdict în Python și despre cum putem efectua diferite operații pe defaultdict folosind parametrul default_factory.