Высокопроизводительный массовый поиск коротких строк в Python

Проблема: Большой статический список строк предоставлен как A, длинная строка предоставлена как B, строки в A все очень короткие (список ключевых слов), я хочу проверить, является ли каждая строка в A подстрокой B и получить их.

Сейчас я использую простой цикл типа:

result = []
for word in A:
    if word in B:
        result.append(word)

Но это безумно медленно, когда A содержит ~500,000 или более элементов.

Есть ли какая-нибудь библиотека или алгоритм, который подходит для решения этой проблемы? Я пробовал искать, но безуспешно.

Спасибо!

13
задан Felix Yan 13 January 2012 в 02:41
поделиться