Я пытаюсь создать удобный интерфейс для доступа к набору данных, где каждое значение имеет несколько возможных ключей.Например, предположим, что у меня есть и число и имя для каждого значения в наборе данных.Я хочу иметь доступ к каждому значению, используя либо номер, либо имя.
Я рассмотрел несколько возможных реализаций:
Использование двух отдельных словарей, один длязначения данных, упорядоченные по номеру, и одно для значений данных, упорядоченных по имени.
Простое назначение двух ключей одному значению в словаре.
Создание словарей, сопоставляющих каждое имя с соответствующим номером, и наоборот
Попытка создать хеш-функцию, которая сопоставляет каждое имя с номером и т. Д. (Относится к вышеупомянутому)
Создание объекта для инкапсуляции всех трех частей данных, затем использование одного ключа для сопоставления ключей словаря с объектами и простой поиск в словаре для сопоставления другого ключа с объектом.
Ничто из этого не кажется идеальным.Первое кажется уродливым и несостоятельным.Второе тоже кажется хрупким.Третий / четвертый кажется правдоподобным, но, похоже, требует либо много ручной спецификации, либо слишком сложной реализации.Наконец, пятый теряет производительность в постоянном времени для одного из поисков.
В C / C ++ я считаю, что я использовал бы указатели для ссылки на один и тот же фрагмент данных из разных ключей.
Я знаю, что эта проблема довольно похожа на проблему поиска в базе данных по неключевому столбцу, однако я хотел бы (если это возможно) поддерживать приблизительную производительность O (1) словарей Python.
Чтосамый питонский способ достижения этой структуры данных?