考虑到英语中的所有单词,找到字谜

时间:2014-02-23 10:16:48

标签: python-2.7

words_ = load_words("C:\Users\Abdullah\Downloads\EOWL-v1.1.2\EOWL-v1.1.2\LF Delimited Format")

def find_all_anagrams(words, word):
    import itertools
    permuted_chars = []
    for i in range(2, len(word)+1):
        permuted_chars += itertools.permutations(word, i)
    permutations_list = ["".join(i) for i in permuted_chars]
    anagrams_list = [i for i in permutations_list if i in words]
    return anagrams_list

为了找到给定单词的字谜,我想出了这个解决方案 我有128,000的单词列表可以任何机构建议更好的方式 加载单词:

from io import *
import string

def load_words(base_dir):
    words = []
    for i in string.uppercase:
        location = base_dir+"\\"+i+" Words.txt"
        with open(location, "rb+") as f:
            words += [x.rstrip() for x in f.readlines()]
    return words

1 个答案:

答案 0 :(得分:4)

是的,有更好的方法。字谜包含相同的字母。因此,如果您对单词(按字符)排序,您将得到相同的结果。 (例如:mary - > amryarmy - > amry)。

使用这个技巧,您可以简单地构建一个字典,其中排序的版本是键,而字谜列表是值。