¿Estructura de datos para implementar un diccionario con múltiples índices?

Estoy buscando una estructura de datos que contenga los mismos valores en dos índices diferentes, donde puedo acceder a los datos a través deya seauno.

Ejemplo:

x = mysticalDataStructure()
x.add(1,'karl', dog)
x.add(2,'lisa', cat)

$ x[1].age
2
$ x['karl'].age
2
$ x[1].age = 4
$ x['karl'].age
4

¿Hay algo que haya prerollizado o cuál es el mejor método para rodar el mío (necesito acceso a través de un índice (el número va de 0 a n en incrementos de 1) y a través de una cadena)?

collections.ordereddict No parece tener acceso aleatorio rápido a través de la posición, por lo que veo, solo puedo recorrerlo con el iterador hasta que alcance el elementoi (Puedo insertar en el orden correcto).

Respuestas a la pregunta(3)

Su respuesta a la pregunta