Python中高效的组子字符串搜索?

2024-05-23 18:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我从一个文件中加载了一些信息到一个Python3 dict中,结果如下所示

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 ''

但我想知道是否有一种更有效的算法用于这种批量搜索;比我天真的循环更有效。有人知道这种算法吗


Tags: 文件字符串in算法信息helloforreturn
1条回答
网友
1楼 · 发布于 2024-05-23 18:33:11

可以使用正则表达式来避免额外的操作。在这里,您只需将单词与一个pip字符连接起来,并将其传递给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{}它,而是获取所有事件的迭代器或使用字典存储它们,等等

相关问题 更多 >