Python - найти все подслова, которые могут быть найдены внутри слова

В конце концов, я хочу выяснить, какое слово в словаре английского языка содержит больше всего подслов, состоящих как минимум из трех букв. Я написал этот алгоритм, но он слишком медленный, чтобы быть полезным. Не знаете, как его оптимизировать

def subWords(word):
    return set((word[0:i] for i in range(2, len(word)+1))) #returns all subWords of length 2 or greater

def checkDict(wordList, dictList):
    return set((word for word in wordList if word in dictList))

def main():
    dictList = [i.strip() for i in open('wordlist.txt').readlines()]
    allwords = list()
    maximum = (0, list())

    for dictWords in dictList:
        for i in range (len(dictWords)):
            for a in checkDict(subWords(dictWords[i: len(dictWords) + 1]), dictList):
                allwords.append(a)

        if len(allwords) > maximum[0]:
            maximum = (len(allwords), allwords)

        print maximum
        allwords = list()

    print maximum 
main()
5
задан Parseltongue 3 August 2011 в 21:50
поделиться