Tablas hash y mapas hash en Python
Publicado: 2022-11-06Los datos requieren múltiples formas de ser accedidos o almacenados. Hash Tables y Hashmaps resultan ser las mejores estructuras de datos para implementar esto en Python a través del tipo de datos integrado conocido como diccionario.
Un Hashmap o una tabla Hash en la estructura de datos asigna claves a sus pares de valores y utiliza una función que calcula cualquier valor de índice que contenga los elementos que se insertarán, buscarán o eliminarán. Esto ayuda a que el acceso a los datos sea más fácil y rápido. Las tablas hash generalmente almacenan pares clave-valor y usan la función hash para generar una clave.
En este artículo, aprenderá qué son las tablas hash y los mapas hash y cómo se implementan en Python.
Aprenda ciencia de datos para ganar ventaja sobre sus competidores
¿Qué es una tabla Hash o un Hashmap Python?
Una tabla hash o hashmap Python es una estructura de datos indexada. Utiliza funciones hash para calcular un índice mediante el uso de una clave en una matriz de ranuras o cubos. Puede asignar su valor a un depósito utilizando el índice correspondiente, y la clave es inmutable y única.
Los Hashmaps son similares a un gabinete de cajones etiquetados con las cosas que almacenan. Por ejemplo, los hashmaps pueden almacenar información del usuario como el nombre y apellido, etc., en el depósito.
La función hash es integral para la implementación de un hashmap. Utiliza la clave y la traduce al índice del depósito en la lista de depósitos. El hashing ideal produce un índice separado para cada clave. Sin embargo, tenga en cuenta que pueden producirse colisiones. Cuando el hashing produce un índice ya existente, se puede usar fácilmente un cubo para múltiples valores al volver a hacer el hash o agregar una lista. En Python, un ejemplo de mapas hash son los diccionarios.
Analicemos la implementación de hashmap en detalle para aprender a personalizar y crear estructuras de datos para la optimización de búsqueda.
Hashmap en Python
El hashmap incluye las siguientes funciones:
- set_val(clave, valor): Esta función se utiliza para insertar un par clave-valor en el mapa hash. Si ya existe un valor en el mapa hash, debe actualizar el valor.
- get_val(clave): esta función devuelve el valor a la clave especificada que está asignada o "No se encontró ningún registro" si este mapa no tiene ninguna asignación para la clave.
- delete_val(key): elimina la asignación de la clave en particular si hashmap tiene la asignación de la clave.
Implementación:-
tabla hash de clase:
# Crear una lista de deseos vacía del tamaño dado
def __init__(uno mismo, tamaño):
self.tamaño = tamaño
self.hash_table = self.create_buckets()
def create_buckets(auto):
devuelve [[] para _ en rango (self.size)]
# Insertar valores en el mapa hash
def set_val(self, clave, val):
# Obtener el índice de la clave
# usando la función hash
hash_key = hash(clave) % self.size
# Obtener el depósito correspondiente al índice
depósito = self.hash_table[hashed_key]
llave_encontrada = Falso
para el índice, registre en enumerar (depósito):
record_key, record_val = registro
# comprobar si el depósito tiene la misma clave que
# la clave a insertar
si record_key == clave:
clave_encontrada = Verdadero
descanso
# Si el cubo tiene la misma llave que la llave que se va a insertar,
# Actualizar el valor de la clave
# De lo contrario, agregue el nuevo par clave-valor al depósito
si se encuentra_clave:
cubeta[índice] = (clave, valor)
más:
cubeta.append((clave, valor))
# Devuelve el valor buscado con clave específica
def get_val(self, clave):
# Obtenga el índice de la clave usando
# función hash
hash_key = hash(clave) % self.size
# Obtener el depósito correspondiente al índice
depósito = self.hash_table[hashed_key]
llave_encontrada = Falso
para el índice, registre en enumerar (depósito):
record_key, record_val = registro
# comprobar si el depósito tiene la misma clave que
# la clave que se busca
si record_key == clave:
clave_encontrada = Verdadero
descanso
# Si el depósito tiene la misma clave que la clave que se busca,
# Devuelve el valor encontrado
# De lo contrario indica que no se encontró ningún registro
si se encuentra_clave:
devolver record_val
más:
devolver "No se encontró ningún registro"
# Eliminar un valor con clave específica
def delete_val(self, clave):
# Obtenga el índice de la clave usando
# función hash
hash_key = hash(clave) % self.size
# Obtener el depósito correspondiente al índice
depósito = self.hash_table[hashed_key]
llave_encontrada = Falso
para el índice, registre en enumerar (depósito):
record_key, record_val = registro
# comprobar si el depósito tiene la misma clave que
# la clave a borrar
si record_key == clave:
clave_encontrada = Verdadero
descanso
si se encuentra_clave:
cubeta.pop(índice)
devolver
# Para imprimir los elementos del mapa hash
def __str__(uno mismo):
devuelve “”.join(str(elemento) para el elemento en self.hash_table)
tabla_hash = tabla hash(50)
# insertar algunos valores
hash_table.set_val([email protected]', 'algún valor')
imprimir (tabla_hash)
impresión()
hash_table.set_val('[email protected]', 'algún otro valor')
imprimir (tabla_hash)
impresión()
# buscar/acceder a un registro con clave
imprimir(hash_table.get_val('[email protected]'))
impresión()
# eliminar o eliminar un valor
hash_table.delete_val('[email protected]')
imprimir (tabla_hash)
Producción:-
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'algún valor') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'algún valor') ][][][][][][('[email protected]', 'algún otro valor')][][][][][][][][][ ][][][][][][][][][][][][]
Algún otro valor
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'algún valor') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]
Consulte nuestros programas de ciencia de datos de EE. UU.
Programa de certificado profesional en ciencia de datos y análisis empresarial | Maestría en Ciencias en Ciencia de Datos | Maestría en Ciencias en Ciencia de Datos | Programa de Certificado Avanzado en Ciencia de Datos |
Programa PG Ejecutivo en Ciencia de Datos | Bootcamp de programación Python | Programa de Certificado Profesional en Ciencia de Datos para la Toma de Decisiones Empresariales | Programa Avanzado en Ciencia de Datos |
Realización de operaciones en tablas hash utilizando diccionarios:
Existen numerosas operaciones que se pueden realizar en Python en tablas hash a través de diccionarios. Son los siguientes:-
- Acceso a valores
- Actualización de valores
- Borrando elemento
Acceder a valores:
Puede acceder fácilmente a los valores de un diccionario de las siguientes maneras:-
- Uso de valores clave
- Uso de funciones
- Implementando el bucle for
Usando valores clave:
Puede acceder a los valores del diccionario utilizando los valores clave como se muestra a continuación:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} mi_dict['Anna'] |
Salida: '002'
Usando funciones:
Hay numerosas funciones integradas como get(), keys(), values(), etc.
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} imprimir (my_dict.keys()) imprimir(mi_dict.valores()) imprimir(mi_dict.get('Elsa')) |
Producción:-
dict_keys(['Elsa', 'Anna', 'Olaf'])
valores_dict(['001', '002', '003'])
001
Implementando el bucle for:
El ciclo le da acceso a los pares clave-valor de un diccionario iterándolos. Por ejemplo:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} imprimir(“Todas las claves”) para x en mi_dict: print(x) #imprime las claves imprimir(“Todos los valores”) para x en my_dict.values(): print(x) #imprime valores print(“Todas las claves y valores”) para x,y en my_dict.items(): print(x, “:” , y) #imprime claves y valores |
Producción:
Todas las llaves
Elsa
ana
Olaf
Todos los valores
001
002
003
Todas las claves y valores
Elsa: 001
Ana: 002
Olaf: 003
Actualización de valores:
Los diccionarios son tipos de datos mutables que se pueden actualizar cuando sea necesario. Puedes hacer lo siguiente:-
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} my_dict['Olaf'] = '004' #Actualizando el valor de Dave my_dict['Kristoff'] = '005' #agregar un par clave-valor imprimir (mi_dict) |
Salida : {'Elsa': '001', 'Anna': '002', 'Olaf': '004', 'Kristoff': '005'}
Eliminación de elementos de un diccionario:
Puede eliminar elementos de un diccionario con funciones como del(), pop(), popitem(), clear(), etc. Por ejemplo:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} del my_dict['Elsa'] #elimina el par clave-valor de 'Elsa' my_dict.pop('Anna') #elimina el valor de 'Anna' my_dict.popitem() #elimina el último elemento insertado imprimir (mi_dict) |
Salida : {'Olaf': '003'}
Conclusión
Podemos concluir fácilmente que los mapas hash y la tabla hash Python son integrales para un acceso más fácil y rápido a los datos relevantes. Es una herramienta valiosa para los profesionales de la ciencia de datos, como los científicos de datos y los analistas de datos. Si está interesado en obtener más información sobre el campo de la ciencia de datos, upGrad tiene el mejor programa de certificación profesional en ciencia de datos para la toma de decisiones empresariales .
¿Qué es un mapa hash, Python y una tabla hash, Python?
Una tabla hash ayuda a almacenar pares clave-valor donde se genera una clave mediante una función hash. Las implementaciones de hashmaps o hashtable en Python se realizan con diccionarios integrados.
¿Cuál es la diferencia entre un mapa hash y una tabla hash de Python?
Un Hashmap no está sincronizado, pero un Hashtable sí está sincronizado. Esto significa que las tablas Hash son seguras para subprocesos y se pueden compartir entre numerosos subprocesos, pero HashMap necesita una sincronización adecuada antes de compartirse.
¿Es el mapa una tabla Hash?
Una tabla hash de Python, también llamada mapa hash, es una estructura de datos que asigna claves a valores. Utiliza la técnica de hash.