logo

Defaultdict i Python

Ordboken er en uordnet samling av dataverdier i Python som brukes til å lagre dataverdier som kart. Ordboken inneholder nøkkel-verdi-par i stedet for å holde en enkelt verdi som et element som andre datatyper. Nøkkelen implementert i ordboken må være unik og uforanderlig. Det vil si at Python-tuppelen kan være en nøkkel, men Python-listen kan ikke være en nøkkel i ordboken. Vi kan lage en ordbok ved å plassere en sekvens av elementer innenfor de krøllede parentesene {}, et komma ',' kan skille verdiene.

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

Produksjon:

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

Men hvis vi prøver å skrive ut den 5. nøkkelverdien så får vi feilen pga 'Dict_1' inneholder ikke den 5. nøkkelverdien.

Eksempel 2:

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

Produksjon:

 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 keyError er tatt opp, kan det bli et problem for brukerne. Vi kan overvinne denne feilen ved å bruke en annen ordbok for Python, som er som en beholder kjent som Defaultdict . Brukerne kan finne denne ordboken i 'samlinger' modul.

defaultdict

Standarddiktet er en ordbok av Python, som er som en beholder tilstede i 'samlinger'-modulen. Det er en underklasse av ordbokklassen som brukes til å returnere det ordboklignende objektet. Både defaultdict og ordbok har samme funksjonalitet, bortsett fra at defaultdict aldri gir noen KeyError, da det gir en standardverdi for nøkkelen, som ikke finnes i ordboken opprettet av brukeren.

Syntaks:

 defaultdict(default_factory) 

Parametere:

    default_factory:Standard_factory()-funksjonen returnerer standardverdien satt av brukeren for ordboken definert av dem. Hvis dette argumentet er fraværende, vil ordboken øke 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']) 

Produksjon:

 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 Arbeid av defaultdict

Når vi bruker defaultdict, får vi en ekstra skrivbar forekomstvariabel og én metode i tillegg til standard ordbokoperasjoner. Den skrivbare forekomstvariabelen er parameteren default_factory og __savnet__ er metoden.

    default_factory:Standard_factory()-funksjonen returnerer standardverdien satt av brukeren for ordboken definert av 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']) 

Produksjon:

 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>
    __savnet__():Funksjonen __missing__() brukes for å gi standardverdien til ordboken. Funksjonen __missing__() tar default_factory som et argument, og hvis argumentet er satt til Ingen, vil en KeyError oppstå; ellers vil det gi en standardverdi for den gitte nøkkelen. Denne metoden kalles i hovedsak av __getitem__() funksjonen til dict-klassen når den forespurte nøkkelen ikke finnes. __getitem__()-funksjonen hever eller returnerer verdien som er tilstede i __missing__()-funksjonen.

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

Produksjon:

 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>

Hvordan bruke 'List' som default_factory

Vi kan sende en listeklasse som default_factory-argumentet, og den vil lage et defaultdict med verdiene som er satt i listeformat.

Eksempel:

java lokal dato
 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) 

Produksjon:

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

Hvordan bruke 'int' som default_factory

Vi kan sende int-klassen som default_factory-argumentet, og det vil lage et defaultdict med standardverdien satt til null.

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) 

Produksjon:

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

Konklusjon

I denne opplæringen har vi diskutert defaultdict i Python og hvordan vi kan utføre forskjellige operasjoner på defaultdict ved å bruke parameteren default_factory.