Python 2.7 根据英语中的所有单词查找字谜

Python 2.7 根据英语中的所有单词查找字谜,python-2.7,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 ran

为了找到一个给定单词的字谜,我想出了这个解决方案 我有十二万八千个字的名单,有谁能提出更好的办法吗 要加载单词:

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

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


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

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


使用此技巧,您只需构建一个字典,其中排序版本是关键,而字谜列表是值。

当前解决方案有什么问题?大约需要20秒完成执行寻找更好的解决方案,你对一个字谜的定义似乎有点奇怪-你应该严格使用
单词
中的所有字母,我不理解
,因为我在…
loopFor“abbeys”[“abbe”,“abbey”,“abbeys”]都是字谜。我使用for循环生成不同大小的字谜你当前的解决方案有什么问题?大约需要20秒来完成执行寻找更好的解决方案,它更快、时间更简单你对字谜的定义似乎有点奇怪-你应该严格使用
word
中的所有字母,我不懂
,因为我在…
loopFor“abbeys”[“abbe”,“abbey”,“abbeys”]是字谜。我使用for循环为不同的大小生成字谜,但是我们如何在内部保留重复的字谜设置所有键的实现,因此对于“mary”,“army”->“amry”-->是键,键的最后一个值将存在“字谜列表”但是,我们如何在内部保留重复项Dictionary设置所有键的实现,因此对于“mary”,“army”->“amry”-->是键,键的最后一个值将存在“一个字谜列表”
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