Если вы уверены, что длина слов в вашем наборе невелика. Возможно, вы могли бы создать таблицу, которая содержит следующее:
Список слов с первым символом «a», Список слов с первым символом «b», ..
Список слов, имеющих второй символ «a», Список слов, имеющих второй символ «b», ..
и так далее.
Когда вы ищете слово. Вы можете найти список слов, в которых первый символ совпадает с первым символом строки поиска. С этим уточненным списком ищите слова, у которых второй символ совпадает со вторым символом строк поиска и так далее. Вы можете игнорировать "." всякий раз, когда вы сталкиваетесь с ними.
Я понимаю, что создание стола может занять много места, но время, потраченное на это, значительно сократится.
Например, если у вас есть myset = {"bar", "foo", "cya", "test"} и вы ищете 'f.o'
В тот момент, когда вы проверяете список слов, начинающихся с f, вы исключаете остальную часть набора. Просто идея .. Надеюсь, это поможет.