Эффективная структура данных объектов в Python для поиска на основе любой переменной-члена объекта

Мне нужно хранить объекты, которые имеют число (> 2) целочисленных переменных-членов, и выполнять быстрый поиск, используя любые переменные-члены в качестве ключа поиска.

Для упрощения иллюстрации предположим, что объекты представляют собой кортежи из трех целых чисел, и мне нужно выполнить быстрый поиск, используя любой элемент кортежа в качестве ключа в списке таких кортежей:

collection = [(1, 200, 9), 
              (2, 300, 8), 
              (3, 400, 7)]

Поиск будет примерно таким:

collection.lookup_by_first_element(1) # Return (1, 200, 9)
collection.lookup_by_second_element(300) # Return (2, 300, 8)
collection.lookup_by_third_element(250) # Return None

Мне нужно, чтобы поиск был быстрым / эффективным. Пока что лучше всего использовать базу данных sqlite в памяти с тремя столбцами для трех элементов кортежа и помещать индексы во все три столбца.

Подойдет и дерево поиска, но у них есть один ключ для поиска, а я этого не делаю. Я не вижу, как я могу выполнять поиск на основе более чем одного ключа. Как бы вы это сделали?

10
задан kadam 22 May 2011 в 23:35
поделиться