Python TypeError: Unhashable Tipo: Lista

Zeeshan Afridi 21 junio 2023
  1. el TypeError: unhashable type: 'list' en Python
  2. Función hash en Python
  3. Solucione el Error de tipo: tipo no modificable: 'lista' en Python
Python TypeError: Unhashable Tipo: Lista

Este artículo discutirá el TypeError: unhashable type: 'list' y cómo solucionarlo en Python.

el TypeError: unhashable type: 'list' en Python

Este error ocurre cuando pasa los objetos que no se pueden modificar como una lista como una clave para el diccionario de Python o encuentra el valor hash de una función.

Los diccionarios son una estructura de datos en Python que funciona en pares clave-valor, cada clave tiene un valor en su contra, y para acceder a los valores de los valores, necesitará las claves como índices de matriz.

Sintaxis de un diccionario:

dic = {"key": "Values"}

Los objetos hashable son aquellos cuyo valor no cambia con el tiempo pero siguen siendo los mismos tuples y strings son tipos de objetos hashable.

Código:

# creating a dictionary
dic = {
    # list as a key --> Error because lists are immutable
    ["a", "b"]: [1, 2]
}

print(dic)

Producción :

TypeError: unhashable type: 'list'

Hemos usado una lista ["a","b"] como clave, pero el compilador ha arrojado un TypeError: unhashable type: 'list'.

Busquemos manualmente el valor hash de la lista.

Código:

lst = ["a", "b"]

hash_value = hash(lst)

print(hash_value)

Producción :

TypeError: unhashable type: 'list'

La función hash() se usa para encontrar el valor hash de un objeto dado, pero el objeto debe ser inmutable como cadena, tupla, etc.

Función hash en Python

La función hash() es una técnica de encriptación que encripta el objeto inmutable y le asigna un valor único, conocido como valor hash del objeto. No importa el tamaño de los datos, proporciona el mismo tamaño de valor único.

Código:

string_val = "String Value"
tuple_val = (1, 2, 3, 4, 5)
msg = """Hey there!
              Welcome to DelfStack"""

print("Hash of a string object\t\t", hash(string_val))
print("Hash of a tuple object\t\t", hash(tuple_val))
print("Hash of a string message\t", hash(tuple_val))

Producción :

Hash of a string object      -74188595
Hash of a tuple object       -1883319094
Hash of a string message     -1883319094

Los valores hash son del mismo tamaño y únicos para cada valor.

Solucione el Error de tipo: tipo no modificable: 'lista' en Python

Para corregir TypeError en Python, debe usar objetos inmutables como claves de diccionarios y como argumentos para la función hash(). Observe en el código anterior que la función hash() funciona perfectamente con objetos mutables como tuple y string.

Veamos cómo podemos arreglar el TypeError: unhashable type: 'list' en los diccionarios.

Código:

# creating a dictionary
dic = {
    # string as key
    "a": [1, 2]
}

print(dic)

Producción :

{'a': [1, 2]}

Esta vez proporcionamos una cadena "a" como clave, con la que está bien trabajar porque las cadenas son mutables.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error

Artículo relacionado - Python TypeError