在Python中过滤字符串列表最快的方法是什么?

Nir*_*rMH 6 python tkinter

我有一个字符串列表 (~400K),其中最长的字符串有~220 个字符。字符串用“.”表示对象的路径 作为分隔符。

我正在尝试构建一个自动完成功能,允许用户快速从列表中选择对象,而不是输入其完整路径。

自动完成功能基于根据用户输入过滤数据库。

我尝试了以下方法。

  1. 使用filter- 基准测试为 ~0.8 秒

    database = list()
    database.append("path.to.first.object")
    database.append("path.to.first.some.object.of.mine")
    ....
    database.append("path.to.last.object") # ~430K items 
    
    partial_name = "som"
    filtered_list = list(filter(lambda x: partial_name in x, database))
    
    Run Code Online (Sandbox Code Playgroud)
  2. regex方法 - 基准为 ~0.15 秒

    regex = re.compile(r"{0}".format(partial_name))
    filtered_list = list(filter(regex.search, database))
    
    Run Code Online (Sandbox Code Playgroud)

以上预计只会产生path.to.first.some.object.of.mine对象

我还考虑了Trie数据结构,但这个不支持“正则表达式”类型的过滤。

有没有更快的方法来过滤字符串?