logo

Predeterminado en Python

El diccionario es una colección desordenada de valores de datos en Python que se utiliza para almacenar valores de datos como mapas. El diccionario contiene pares clave-valor en lugar de contener un valor único como elemento como otros tipos de datos. La clave implementada en el diccionario debe ser única e inmutable. Es decir, la tupla de Python puede ser una clave, pero la lista de Python no puede ser una clave en el diccionario. Podemos crear un diccionario colocando una secuencia de elementos dentro de las llaves {}, una coma ',' puede separar los valores.

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

Producción:

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

Pero si intentamos imprimir el quinto valor clave, obtendremos el error porque 'Dict_1' no contiene el quinto valor clave.

Ejemplo 2:

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

Producción:

 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 

Siempre que el error clave se plantea, puede convertirse en un problema para los usuarios. Podemos superar este error usando otro diccionario de Python, que es como un contenedor conocido como dictamen predeterminado . Los usuarios pueden encontrar este diccionario dentro del 'colecciones' módulo.

dictamen predeterminado

El defaultdict es un diccionario de Python, que es como un contenedor presente dentro del módulo 'colecciones'. Es una subclase de la clase de diccionario que se utiliza para devolver el objeto similar a un diccionario. Tanto defaultdict como el diccionario tienen la misma funcionalidad, excepto que defaultdict nunca genera ningún KeyError ya que proporciona un valor predeterminado para la clave, que no existe en el diccionario creado por el usuario.

Sintaxis:

 defaultdict(default_factory) 

Parámetros:

    fábrica_predeterminada:La función default_factory() devuelve el valor predeterminado establecido por el usuario para el diccionario definido por él. Si este argumento está ausente, el diccionario generará el KeyError.

Ejemplo:

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

Producción:

 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 

Funcionamiento interno de defaultdict

Cuando usamos defaultdict, obtenemos una variable de instancia grabable adicional y un método además de las operaciones de diccionario estándar. La variable de instancia grabable es el parámetro default_factory y __desaparecido__ es el método.

    fábrica_predeterminada:La función default_factory() devuelve el valor predeterminado establecido por el usuario para el diccionario definido por él.

Ejemplo:

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

Producción:

 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>
    __desaparecido__():La función __missing__() se utiliza para proporcionar el valor predeterminado al diccionario. La función __missing__() toma default_factory como argumento, y si el argumento se establece en Ninguno, se generará un KeyError; de lo contrario, proporcionará un valor predeterminado para la clave dada. Este método es esencialmente llamado por el __obtiene el objeto__() Función de la clase dict cuando no se encuentra la clave solicitada. La función __getitem__() genera o devuelve el valor que está presente en la función __missing__().

Ejemplo:

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

Producción:

 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>

Cómo utilizar 'Lista' como default_factory

Podemos pasar una clase de lista como argumento default_factory y creará un defaultdict con los valores establecidos en formato de lista.

Ejemplo:

 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) 

Producción:

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

Cómo utilizar 'int' como default_factory

Podemos pasar la clase int como argumento default_factory y creará un defaultdict con el valor predeterminado establecido en cero.

Ejemplo:

 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) 

Producción:

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

Conclusión

En este tutorial, analizamos defaultdict en Python y cómo podemos realizar diferentes operaciones en defaultdict usando el parámetro default_factory.