У меня есть огромный список данных, более 1M записей в форме, аналогичной (хотя это гораздо более простая форма) к этому:Python: найти индекс элемента, содержащего X в списке
[
{'name': 'Colby Karnopp', 'ids': [441, 231, 822]},
{'name': 'Wilmer Lummus', 'ids': [438, 548, 469]},
{'name': 'Hope Teschner', 'ids': [735, 747, 488]},
{'name': 'Adolfo Fenrich', 'ids': [515, 213, 120]}
...
]
Учитывая id 735, я хочу найти индекс 2 для Hope Teschner, так как данный идентификатор попадает в список идентификаторов для Hope. Каков наилучший (по производительности) способ сделать это?
Спасибо за любые советы.
EDIT
Вероятно, следовало бы упомянуть это, но идентификатор мог показать более одного раза. В случае, когда появляется конкретный идентификатор , я хочу получить самый низкий индекс для данного идентификатора.
Данные в списке будут меняться часто, поэтому я не решаюсь идти о создании словаря, поскольку словарь должен быть модифицирован/перестроен с каждым обновлением в список, поскольку индексы являются значениями в dict - то есть. изменение позиции одного элемента в списке потребует обновления каждого значения в словаре, чей индекс больше, чем новый измененный индекс.
EDIT EDIT
Я просто сделал некоторые бенчмаркинг, и кажется, что восстановление словаря довольно быстро, даже для 1M + записей. Я думаю, что я продолжу это решение на данный момент.
В общем, все, что может повысить производительность поиска по прямолинейному поисковому запросу, потребует либо сортировки, либо создания отдельной таблицы хэшей и т. Д. Поэтому самый важный вопрос: сколько раз вам нужно получить доступ этот список? Разве это построено один раз и доступно много раз? Я не разработчик python, поэтому я говорю только об общих там. –