@dadaniel
бэкенд разработчик, питон и С++

Какой алгоритм для поиска подстрок в списке кортежей будет быстрее comprehension?

Дано: Список из примерно 100k кортежей. Каждый кортеж состоит из двух элементов, первый id, а второй - строка. Нужно выбрать все id из тех кортежей, где строки содержат определенную подстроку.
tuples = [(id1, 'cheese trees'), (id2, 'freezy breeze'),...]
vals = ['cheese', 'flees']
ids = {i[0] for i in tuples if any(val in i[1] for val in vals)}

output: {id1}

Сейчас я это делаю через comprehension, но должно же быть более быстрое алгоритмическое решение! вот его-то я и ищу.
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Алгоритм Ахо-Корасика.

Все ваши ключи складываете в бор, как описано по ссылке. Потом для каждого кортежа выполняйте поиск в строке i[1], если нашли, то добавляйте ваш id в ответ.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы