Tabla de búsqueda para no compartir en Python

Necesito crear una asignación de objetos de mi propia clase personalizada (derivada de dict) a objetos de otra clase personalizada. A mi entender, hay dos formas de hacerlo:

Puedo hacer que los objetos sean hashaable. No estoy seguro de cómo haría esto. Sé que puedo implementar__hash__() pero no estoy seguro de cómo calcular realmente el hash (que debería ser un número entero).

Como mis objetos se pueden comparar, puedo hacer una lista [(myobj, myotherobj)] y luego implementar una búsqueda que encuentre la tupla donde el primer elemento de la tupla es el mismo que la clave de búsqueda. Implementar esto es trivial (el número de objetos es pequeño) pero quiero evitar reinventar la rueda si ya existe algo así en la biblioteca estándar.

Me parece que querer buscar inquebrantables sería un problema común, así que supongo que alguien ya ha resuelto este problema. Cualquier sugerencia sobre cómo implementar__hash()__ para un objeto tipo dict o si hay alguna otra forma estándar de hacer tablas de búsqueda de elementos no compartibles?