python - 在 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 天。
解决方案
只是为了启动,您可以通过使用按字符排序的键创建查找来接近,并使用原始字符串保留值。
例如:{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
推荐阅读
- fonts - 在 Rmarkdown pdf 中更改 Kable 的字体
- c++ - CATCH_CONFIG_MAIN 的 gtest 等价物是什么?
- c# - 来自多个表格的图表
- javascript - Ember 每个循环在数组更新时重新渲染整个对象数组
- python - opencv中轮廓的共享边界
- angular - 找不到名称“数学”
- android - 我们可以将一个数据库用于两个或多个应用程序吗
- unity3d - 什么是 l 和 v1 以及它持有什么类型的值?
- numpy - 查找除for循环以外的批处理数据中第一次出现数字的索引的有效方法
- android - 在意图中获取 SharedPreferences