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

时间:2017-02-19 13:40:14

标签: 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))
    
  2. regex逼近 - 基准到~0.15秒

    regex = re.compile(r"{0}".format(partial_name))
    filtered_list = list(filter(regex.search, database))
    
  3. 上述内容预计只会产生path.to.first.some.object.of.mine对象

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

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

0 个答案:

没有答案