让我们说我已经将文件中的一些信息加载到Python3字典中,结果看起来像这样。
Expected spy getProvider to have been called.
假设我要分析一堆(绝对吨)的弦。如果字符串包含给定键d = {
'hello' : ['hello', 'hi', 'greetings'],
'goodbye': ['bye', 'goodbye', 'adios'],
'lolwut': ['++$(@$(@%$(@#*', 'ASDF #!@# TOW']
}
的任何值,那么我想将其归类于该键中。
例如...
d
很明显,我可以像这样遍历键和值...
'My name is DDP, greetings' => 'hello'
但是我想知道对于这种大量搜索是否有更有效的算法;比我的天真循环更有效。有人知道这样的算法吗?
答案 0 :(得分:1)
您可以使用正则表达式来避免额外的操作。在这里,您所需要做的只是将单词与点字符连接起来,并将其传递给re.search()
。由于顺序或确切的单词对您而言并不重要,因此您可以找出这些值与给定的字符串之间是否存在任何交集。
import re
def classify(s, d):
for k, v in d.items():
regex = re.compile(re.escape(r'|'.join(v)))
if regex.search(s):
return k
还请注意,您可以不用返回k
yield
来获取所有出现的迭代器,也可以使用字典来存储它们,等等。