Проблема: большой статический список строк предоставляется как A
, длинная строка предоставляется как B
, строки в A
все очень короткие (список ключевых слов), я хочу проверить если каждая строка в A
является подстрокой B
и получает их.Высокопроизводительная массовая короткая строка поиска в Python
Теперь я использую простой цикл, как:
result = []
for word in A:
if word in B:
result.append(word)
Но это безумие медленно, когда А содержит ~ 500000 или более пунктов.
Есть ли библиотека или алгоритм, который подходит для этой проблемы? Я старался изо всех сил искать, но не повезло.
Спасибо!
просто теория - что, если вы пытаетесь с помощью 'B.find (слово)' вместо 'если слово в b'? Я считаю, что 'in' является быстрым, если подстрока действительно находится в' B', но она будет намного медленнее, если это не подстрока. 'find' может быть быстрее. – birryree
@birryree Спасибо за комментарий, но в моих тестах с использованием 'B.find (word)' вместо 'word in B' не приложил никаких усилий в производительности :( –