首页 > 解决方案 > 在 Python 中有什么方法可以找到用户输入的混乱单词存在给定列表而没有排列代码以使其更快?

问题描述

假设我有独特的 300k+ 项目列表:

mylist = ["door", "mango", "rose", "orange", "car", "knowledge", "flower", ...., 300k+ items]

userinput = input()

现在,如果用户输入了“知识”的混乱词。例如。“dngwekleo”,程序应检查 mylist 中的输入单词并打印“knowledge”作为输出。

我的代码工作正常,直到输入单词的长度为 7,我使用排列代码进行输入,然后匹配 permutation == mylist 中的每个单词。但是一旦输入词的输入长度超过 8-10,它就会产生太多的排列,然后 python 需要太多时间(10 分钟、20 分钟、30 分钟)来获取输出。

请帮助我解决这个问题,以便在 10-15 秒内更快地得到答案,尝试 20 天。

标签: pythonpython-3.xlistpermutationscramble

解决方案


只是为了启动,您可以通过使用按字符排序的键创建查找来接近,并使用原始字符串保留值。
例如:{deegklnow : knowledge}

my_list = ["door", "mango", "rose", "orange", "car", "knowledge", "flower"]

lookup = {"".join(sorted(x)): x for x in my_list}

print(lookup.get("".join(sorted("dngwekleo"))))
print(lookup.get("".join(sorted("eosr"))))
print(lookup.get("".join(sorted("rca"))))

knowledge
rose
car

推荐阅读