Función incorporada hash() de Python
De la documentación de Python 3
Devuelve el valor hash del objeto (si lo tiene). Los valores hash son enteros. Se utilizan para comparar rápidamente las claves de diccionario durante una búsqueda en un diccionario. Los valores numéricos que se comparan como iguales tienen el mismo valor hash (incluso si son de tipos diferentes, como es el caso de 1 y 1.0).
Introducción
La función hash() devuelve un entero que representa el valor hash de un objeto. Esto se utiliza principalmente por los diccionarios para buscar claves rápidamente.
Solo los objetos “hashables” (con capacidad de ser hasheados) pueden pasarse a hash(). Un objeto es hashable si tiene un valor hash que nunca cambia durante su vida útil. Todos los tipos inmutables incorporados de Python (como cadenas, números y tuplas) son hashables, mientras que los contenedores mutables (como listas y diccionarios) no lo son.
Ejemplos
# El hash de un entero es el entero mismo
print(hash(1))
print(hash(1.0)) # 1 y 1.0 son iguales
# Hash de una cadena (la salida varía)
print(hash('hello'))
# Hash de una tupla (la salida varía)
print(hash((1, 2, 3)))
# Intentar hashear una lista generará un TypeError
try:
hash([1, 2, 3])
except TypeError as e:
print(e)
1
1
-1182655621190490452
529344067295497451
unhashable type: 'list'