Мне нужно хранить объекты, которые имеют число (> 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 в памяти с тремя столбцами для трех элементов кортежа и помещать индексы во все три столбца.
Подойдет и дерево поиска, но у них есть один ключ для поиска, а я этого не делаю. Я не вижу, как я могу выполнять поиск на основе более чем одного ключа. Как бы вы это сделали?