嗯......我有一个简单的请求,建立一个条目,即时过滤条目列表。 (想想编辑器自动完成功能)如何使用正则表达式快速过滤列表?
请求是在整个列表上支持正则表达式过滤器,并只显示匹配的条目。
例如,
该列表包含:
abc.efg.hij.entry
abc.ddd.hij.entry2
hij.some.value.entry
打字在条目
Value : List
hij : abc.efg.hij.entry, abc.ddd.hij.entry2, hij.some.value.entry
ddd : abc.ddd.hij.entry2
dd*entry : abc.ddd.hij.entry2
val : hij.some.value.entry
这里是我使用过滤列表的代码:
regex = re.compile(r"{0}".format(entry_value), re.IGNORECASE)
display_list = list(filter(regex.search, display_list))
现实生活里st包含〜300K字符串的条目(每条最多100个字符),考虑到GUI响应时间,以上的性能非常差。 我已经对我的真实测试案例进行了剖析,并且它为输入中的每个键输入产生〜0.8s。
有没有更快的方法?
感谢 - 优秀的提示 - 我将我的内存数据库移至sqlite3 - 过滤时间降至100ms以下(x8优化)。至于列表框本身,这已经被优化了(我只显示过滤列表的一小部分,并让用户浏览它...) – NirMH