Pitón

Python defaultdict

Python defaultdict

Python ofrece muchas estructuras de datos integradas, como listas, tuplas y diccionarios, para guardar y administrar datos de manera eficiente. Los diccionarios proporcionan una forma sencilla de guardar datos como pares clave-valor. Una clave actúa como índice y se utiliza para recuperar datos. Las claves deben ser únicas e inmutables en todo el diccionario. Las claves son principalmente cadenas y números enteros, aunque el valor de una clave puede ser de cualquier tipo, como un número entero, una cadena, un número de punto flotante o un número complejo. Mientras tanto, un diccionario puede contener una colección, como una lista, tupla o algún otro tipo de diccionario. Un diccionario en Python se crea usando un par de llaves, en las que cada par clave-valor está separado por una coma.

¿Qué sucede si intenta acceder o modificar una clave específica en un diccionario que no existe?? Bueno, en este caso, el intérprete de Python generará el error "KeyError" y terminará la ejecución del programa.

Veamos un ejemplo del error "KeyError".

#creando un diccionario
my_dict = 1: "Hola", 2: "Bienvenido", 3: "LinuxHint"
#accediendo a una clave que no existe
my_dict [4]

Producción

Para manejar este error, Python proporciona el tipo de diccionario predeterminado, una clase de diccionario que se puede encontrar en el módulo de colecciones. Este artículo cubre el Python defaultdict en detalle.

Explicación y ejemplos de defaultdict

El defaultdict es la alternativa del diccionario de Python. Devuelve objetos de tipo diccionario. El defaultdict es una subclase de dict. En el caso de que falte una clave, en lugar de generar un error "KeyError", se proporciona el valor predeterminado para la clave inexistente. La sintaxis de defaultdict es la siguiente:

defaultdict (default_factory)

La función defaultdict toma el parámetro default_factory como argumento. La función default_factory devuelve el valor predeterminado para el defaultdict definido. Si intentamos acceder o modificar una clave que falta, entonces la función default_factory devuelve el valor predeterminado como resultado. Si falta la función default_factory, entonces el defaultdic generará un error "KeyError" si faltan claves.

Primero, implementaremos un defaultdic en nuestro script de Python para acceder a las claves existentes y faltantes.

#importar el defaultdict del módulo de colección
de las colecciones importar defaultdict
#definiendo una función para devolver el valor predeterminado
def my_func ():
print ("La clave no está definida")
#creando un truco definitivo
# pasando my_func () como argumento a defaultdict
my_dict = defaultdict (my_func)
#definiendo las claves y los valores
my_dict [1] = "Hola"
my_dict [2] = "Bienvenido"
my_dict [3] = "LinuxHint"
#accediendo a los valores usando claves
imprimir (my_dict [1])
imprimir (my_dict [2])
imprimir (my_dict [3])
#accediendo a la clave faltante o no definida
my_dict [4]

Producción

El [4] es la clave que falta. Entonces, en lugar de generar un error "KeyError", llama a la función default_factory, que devuelve el valor predeterminado.


Una función lambda, conocida como función anónima, también se puede utilizar como parámetro default_factory.

A continuación, implementaremos una función lambda y la pasaremos como argumento a defaultdict.

#importar el defaultdict del módulo de colección
de las colecciones importar defaultdict
#creando un truco definitivo
# pasar la función Lamnda como argumento para defaultdict
my_dict = defaultdict (lambda: "La clave no está definida")
#definiendo las claves y los valores
my_dict [1] = "Hola"
my_dict [2] = "Bienvenido"
my_dict [3] = "LinuxHint"
#accediendo a los valores usando claves
imprimir (my_dict [1])
imprimir (my_dict [2])
imprimir (my_dict [3])
#accediendo a la clave faltante o no definida
imprimir (my_dict [4])

El defaultdict llama a default_factory para proporcionar el valor predeterminado, pero la función __missing () __ proporciona el valor predeterminado. La función __missing () __ es una función incorporada en Python que toma el parámetro default_factory como argumento. Si el parámetro default_factory no está definido, la función __missing () __ genera el error "KeyError".

Aquí, usaremos la función __missing () __ en nuestro script de Python.

#importar el defaultdict del módulo de colección
de las colecciones importar defaultdict
#definiendo una función para devolver el valor predeterminado
def my_func ():
print ("La clave no está definida")
#creando un truco definitivo
# pasando my_func () como argumento a defaultdict
my_dict = defaultdict (my_func)
#definiendo las claves y los valores
my_dict [1] = "LinuxHint"
#accediendo a los valores usando claves
imprimir (my_dict [1])
#accediendo a la clave faltante o no definida
my_dict.__falta __ (2)

Producción

Las clases list e int también se pueden usar como parámetros default_factory con defaultdict.

Listar como parámetro default_factory

El defaultdict se crea con los valores de la lista cuando a la clase de la lista se le pasa un parámetro default_factory.

#importar el defaultdict del módulo de colección
de las colecciones importar defaultdict
# definiendo un defaultdict
# pasando la clase de lista como default_factory
my_dict = defaultdict (lista)
para i en el rango (7):
my_dict [i].añadir (i)
#imprimir los valores
imprimir (my_dict)

Producción

La salida muestra los valores en la lista. Como puede ver, se ha creado un diccionario predeterminado que contiene la clave y los valores.

Enteros como parámetro default_factory

Si pasamos la clase int como parámetro default_factory, entonces podemos crear un defaultdict que solo contenga enteros. Crearemos una lista de enteros y luego la guardaremos en defaultdict.

#importar el defaultdict del módulo de colección
de las colecciones importar defaultdict
# definir un defaultdict
# pasando la clase int como default_factory
my_dict = defaultdict (int)
#creación de una lista de números enteros
my_list = [1,2,3]
para yo en mi_lista:
my_dict [i] + = 1
#imprimir los valores
imprimir (my_dict)

Producción

En la salida dada, los valores enteros antes de los dos puntos (:) son claves, mientras que los valores enteros después de los dos puntos son valores.

Conclusión

El dafualtdict es una clase similar a un diccionario presente en el módulo de colecciones. Funciona como un diccionario de Python, pero no genera un "KeyError" cuando no se encuentra una clave. Este artículo explica el defaultdict en detalle con varios ejemplos.

Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...
Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...
Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...