logo

Defaultdict i Python

Ordbogen er en uordnet samling af dataværdier i Python, der bruges til lagring af dataværdier såsom kort. Ordbogen indeholder nøgle-værdi-par i stedet for at holde en enkelt værdi som et element ligesom andre datatyper. Nøglen implementeret i ordbogen skal være unik og uforanderlig. Det vil sige, at Python-tuplen kan være en nøgle, men Python-listen kan ikke være en nøgle i ordbogen. Vi kan oprette en ordbog ved at placere en sekvens af elementer inden for de krøllede parenteser {}, et komma ',' kan adskille værdierne.

Eksempel 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 hvis vi prøver at udskrive den 5. nøgleværdi, så får vi fejlen pga 'Dict_1' indeholder ikke den 5. nøgleværdi.

Eksempel 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år som helst nøglefejl er rejst, kan det blive et problem for brugerne. Vi kan overvinde denne fejl ved at bruge en anden ordbog af Python, som er som en container kendt som Defaultdict . Brugerne kan finde denne ordbog inde i 'samlinger' modul.

defaultdict

Standarddiktet er en ordbog over Python, som er som en beholder til stede inde i 'samlinger'-modulet. Det er en underklasse af ordbogsklassen, som bruges til at returnere det ordbogslignende objekt. Både defaultdict og ordbog har samme funktionalitet, bortset fra at defaultdict aldrig rejser nogen KeyError, da det giver en standardværdi for nøglen, som ikke findes i den ordbog, som brugeren har oprettet.

Syntaks:

 defaultdict(default_factory) 

Parametre:

    default_factory:Funktionen default_factory() returnerer standardværdien indstillet af brugeren for ordbogen defineret af dem. Hvis dette argument er fraværende, vil ordbogen rejse KeyError.

Eksempel:

 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 

Indre Arbejde af defaultdict

Når vi bruger defaultdict, får vi en ekstra skrivbar instansvariabel og en metode ud over standardordbogsoperationerne. Den skrivbare instansvariabel er parameteren default_factory og __mangler__ er metoden.

    default_factory:Funktionen default_factory() returnerer standardværdien indstillet af brugeren for ordbogen defineret af dem.

Eksempel:

 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>
    __mangler__():Funktionen __missing__() bruges til at angive standardværdien til ordbogen. Funktionen __missing__() tager default_factory som et argument, og hvis argumentet er sat til Ingen, vil en KeyError opstå; ellers vil det give en standardværdi for den givne nøgle. Denne metode kaldes hovedsageligt af __getitem__() funktion af dict-klassen, når den anmodede nøgle ikke findes. Funktionen __getitem__() hæver eller returnerer den værdi, der er til stede i funktionen __missing__().

Eksempel:

 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>

Sådan bruger du 'List' som default_factory

Vi kan sende en listeklasse som argumentet default_factory, og den vil skabe et defaultdict med de værdier, der er sat i listeformat.

Eksempel:

java listeboks
 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]}) 

Sådan bruger du 'int' som default_factory

Vi kan sende int-klassen som default_factory-argumentet, og det vil skabe et defaultdict med standardværdien sat som nul.

Eksempel:

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

Konklusion

I denne tutorial har vi diskuteret defaultdict i Python, og hvordan vi kan udføre forskellige operationer på defaultdict ved at bruge parameteren default_factory.