假设我已将文件中的某些信息加载到Python3字典中,结果如下所示。
d = {
'hello' : ['hello', 'hi', 'greetings'],
'goodbye': ['bye', 'goodbye', 'adios'],
}
假设我要分析一堆,绝对是一吨绝对的弦。如果字符串包含给定键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 ''
但是我想知道对于这种批量搜索是否有更有效的算法;比我的天真循环更有效。有人知道这种算法吗?
re.search()
。由于顺序或确切的单词对您而言并不重要,因此您可以找出这些值和给定的字符串之间是否存在任何交集。import re
def classify(s, d):
for k, v in d.items():
regex = re.compile(r'|'.join(v))
if regex.search(s):
return k
还请注意,您可以代替返回k
yield
来获取所有出现的迭代器或使用字典来存储它们,等等。>