【发布时间】:2020-02-19 20:19:03
【问题描述】:
假设我已将文件中的一些信息加载到 Python3 字典中,结果如下所示。
d = {
'hello' : ['hello', 'hi', 'greetings'],
'goodbye': ['bye', 'goodbye', 'adios'],
'lolwut': ['++$(@$(@%$(@#*', 'ASDF #!@# TOW']
}
假设我要分析一堆,我的意思是绝对吨,字符串。如果字符串包含d 给定键的任何值,那么我想将其归类为在该键中。
例如...
'My name is DDP, greetings' => 'hello'
显然我可以像这样遍历键和值...
def classify(s, d):
for k, v in d.items():
if any([x in s for x in v]):
return k
return ''
但我想知道这种批量搜索是否有更有效的算法;比我天真的循环更有效。有人知道这样的算法吗?
【问题讨论】:
-
这个问题是基于意见的,但最有效的方法是对它们进行预分类。然后只需使用最快的算法搜索排序列表
-
预分类什么?如果我正在寻找完全匹配的内容,我可以对字典的值进行预排序,但我正在检查它们是否是子字符串。
-
对字典进行预排序,这样在其中的搜索会更快,但我想这无关紧要,因为 python 有
in命令 -
忘掉我说的话吧。
标签: python python-3.x search