Struktura danych do wdrożenia słownika z wieloma indeksami?

Szukam struktury danych, która zawiera te same wartości w dwóch różnych indeksach, gdzie mogę uzyskać dostęp do danych wedługzarównojeden.

Przykład:

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

Czy jest coś prerolowane lub jakie jest najlepsze podejście do rzucania własnymi (potrzebuję dostępu za pomocą indeksu (liczba od 0 do n w przyrostach co 1) i za pomocą ciągu).

collections.ordereddict wydaje się, że nie ma szybkiego dostępu losowego przez pozycję, o ile widzę, że mogę go tylko przejść z iteratorem, dopóki nie dotrę do elementui (Mogę wstawić w odpowiedniej kolejności).