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
答案 0 :(得分:4)
是的,有更好的方法。字谜包含相同的字母。因此,如果您对单词(按字符)排序,您将得到相同的结果。 (例如:mary
- > amry
,army
- > amry
)。
使用这个技巧,您可以简单地构建一个字典,其中排序的版本是键,而字谜列表是值。