まあ...私はエントリを作成するという些細な要求があり、その場でエントリのリストをフィルタリングします。 (エディタの自動補完機能を考えてください)正規表現を使ってリストをすばやくフィルタリングする方法はありますか?
要求は、リスト全体に正規表現フィルタをサポートし、一致するエントリだけを表示することです。
例えば、
リストが含まれています。ここではエントリに
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