logo

Defaultdict i Python

Ordboken är en oordnad samling av datavärden i Python som används för att lagra datavärden som kartor. Ordboken innehåller nyckel-värdepar istället för att hålla ett enda värde som ett element som andra datatyper. Nyckeln som implementeras i ordboken måste vara unik och oföränderlig. Det vill säga, Python-tupeln kan vara en nyckel, men Python-listan kan inte vara en nyckel i ordboken. Vi kan skapa en ordbok genom att placera en sekvens av element inom de krulliga parenteserna {}, ett kommatecken ',' kan skilja värdena åt.

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

Produktion:

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

Men om vi försöker skriva ut det 5:e nyckelvärdet då får vi felet pga 'Dict_1' innehåller inte det 5:e nyckelvärdet.

Exempel 2:

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

Produktion:

 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 

Närhelst keyError tas upp kan det bli ett problem för användarna. Vi kan övervinna detta fel genom att använda en annan ordbok för Python, som är som en behållare känd som Defaultdict . Användarna kan hitta denna ordbok i 'samlingar' modul.

defaultdict

Standarddiktet är en ordbok för Python, som är som en behållare som finns i modulen 'samlingar'. Det är en underklass till ordboksklassen som används för att returnera det ordboksliknande objektet. Både defaultdict och dictionary har samma funktionalitet, förutom att defaultdict aldrig höjer något KeyError eftersom det ger ett standardvärde för nyckeln, som inte finns i den ordbok som skapats av användaren.

Syntax:

 defaultdict(default_factory) 

Parametrar:

    default_factory:Funktionen default_factory() returnerar standardvärdet som ställts in av användaren för den ordbok som definieras av dem. Om detta argument saknas kommer ordboken att höja KeyError.

Exempel:

hur man konverterar ett heltal till en sträng i java
 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']) 

Produktion:

 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 

Inre Working of defaultdict

När vi använder defaultdict får vi ytterligare en skrivbar instansvariabel och en metod utöver standardordboksoperationerna. Den skrivbara instansvariabeln är parametern default_factory och __saknas__ är metoden.

    default_factory:Funktionen default_factory() returnerar standardvärdet som ställts in av användaren för den ordbok som definieras av dem.

Exempel:

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

Produktion:

 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>
    __saknas__():Funktionen __missing__() används för att tillhandahålla standardvärdet till ordboken. Funktionen __missing__() tar default_factory som ett argument, och om argumentet är satt till None, kommer ett KeyError att uppstå; annars kommer det att ge ett standardvärde för den givna nyckeln. Denna metod kallas i huvudsak av __getitem__() funktion för dict-klassen när den begärda nyckeln inte hittas. Funktionen __getitem__() höjer eller returnerar värdet som finns i funktionen __missing__().

Exempel:

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

Produktion:

 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>

Hur man använder 'List' som default_factory

Vi kan skicka en listklass som argumentet default_factory, och den kommer att skapa ett defaultdict med de värden som är inställda i listformat.

Exempel:

 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) 

Produktion:

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

Hur man använder 'int' som default_factory

Vi kan skicka int-klassen som argumentet default_factory, och det kommer att skapa ett defaultdict med standardvärdet satt till noll.

Exempel:

 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) 

Produktion:

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

Slutsats

I den här handledningen har vi diskuterat defaultdict i Python och hur vi kan utföra olika operationer på defaultdict genom att använda parametern default_factory.

inställningsmeny android