El diccionario en Python es una colección desordenada de valores de datos que se utilizan para almacenar valores de datos como un mapa. A diferencia de otros tipos de datos que contienen solo un valor único como elemento, el diccionario contiene un par clave-valor. En Diccionario, la clave debe ser única e inmutable. Esto significa que una tupla de Python puede ser una clave, mientras que una lista de Python no. Se puede crear un diccionario colocando una secuencia de elementos entre llaves {}, separados por ‘comas’.
Ejemplo:
Python3
# Python program to demonstrate # dictionary Dict = {1: 'Geeks', 2: 'For', 3: 'Geeks'} print("Dictionary:") print(Dict) print(Dict[1]) # Uncommenting this print(Dict[4]) # will raise a KeyError as the # 4 is not present in the dictionary
Producción:
Dictionary: {1: 'Geeks', 2: 'For', 3: 'Geeks'} Geeks
Traceback (most recent call last): File "/home/1ca83108cc81344dc7137900693ced08.py", line 11, in print(Dict[4]) KeyError: 4
A veces, cuando se genera KeyError, puede convertirse en un problema. Para superar esto, Python presenta otro contenedor similar a un diccionario conocido como Defaultdict que está presente dentro del módulo de colecciones.
Nota: Para obtener más información, consulte Diccionario de Python .
DefaultDict
Defaultdict es un contenedor como los diccionarios presentes en las colecciones de módulos . Defaultdict es una subclase de la clase de diccionario que devuelve un objeto similar a un diccionario. La funcionalidad de ambos diccionarios y defaultdict es casi la misma excepto por el hecho de que defaultdict nunca genera un KeyError. Proporciona un valor predeterminado para la clave que no existe.
Sintaxis: defaultdict(default_factory)
Parámetros:
- default_factory: una función que devuelve el valor predeterminado para el diccionario definido. Si este argumento está ausente, el diccionario genera un KeyError.
Ejemplo:
Python3
# Python program to demonstrate # defaultdict from collections import defaultdict # Function to return a default # values for keys that is not # present def def_value(): return "Not Present" # Defining the dict d = defaultdict(def_value) d["a"] = 1 d["b"] = 2 print(d["a"]) print(d["b"]) print(d["c"])
Producción:
1 2 Not Present
Funcionamiento interno de defaultdict
Defaultdict agrega una variable de instancia de escritura y un método además de las operaciones de diccionario estándar. La variable de instancia es el parámetro default_factory y el método proporcionado es __missing__.
- Default_factory: Es una función que devuelve el valor predeterminado para el diccionario definido. Si este argumento está ausente, el diccionario genera un KeyError.
Ejemplo:
Python3
# Python program to demonstrate # default_factory argument of # defaultdict from collections import defaultdict # Defining the dict and passing # lambda as default_factory argument d = defaultdict(lambda: "Not Present") d["a"] = 1 d["b"] = 2 print(d["a"]) print(d["b"]) print(d["c"])
Producción:
1 2 Not Present
- __missing__(): esta función se utiliza para proporcionar el valor predeterminado para el diccionario. Esta función toma default_factory como argumento y si este argumento es Ninguno, se genera un KeyError; de lo contrario, proporciona un valor predeterminado para la clave dada. Este método es llamado básicamente por el método __getitem__() de la clase dict cuando no se encuentra la clave solicitada. __getitem__() aumenta o devuelve el valor devuelto por __missing__(). método.
Ejemplo:
Python3
# Python program to demonstrate # defaultdict from collections import defaultdict # Defining the dict d = defaultdict(lambda: "Not Present") d["a"] = 1 d["b"] = 2 # Provides the default value # for the key print(d.__missing__('a')) print(d.__missing__('d'))
Producción:
Not Present Not Present
Uso de List como default_factory
Cuando la clase de lista se pasa como el argumento fábrica_predeterminada, se crea un dictado predeterminado con los valores que son lista.
Ejemplo:
Python3
# Python program to demonstrate # defaultdict from collections import defaultdict # Defining a dict d = defaultdict(list) for i in range(5): d[i].append(i) print("Dictionary with values as list:") print(d)
Producción:
Dictionary with values as list: defaultdict(<class 'list'>, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})
Usando int como default_factory
Cuando la clase int se pasa como argumento default_factory, se crea un dictado predeterminado con el valor predeterminado cero.
Ejemplo:
Python3
# Python program to demonstrate # defaultdict from collections import defaultdict # Defining the dict d = defaultdict(int) L = [1, 2, 3, 4, 2, 4, 1, 2] # Iterate through the list # for keeping the count for i in L: # The default value is 0 # so there is no need to # enter the key first d[i] += 1 print(d)
Producción:
defaultdict(<class 'int'>, {1: 2, 2: 3, 3: 1, 4: 2})
Publicación traducida automáticamente
Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA