음 ... 나는 항목의 목록을 즉석에서 필터링하는 항목을 작성하라는 사소한 요청이 있습니다. (편집기 자동 완성 기능을 생각해보십시오)regex를 사용하여 목록을 빠르게 필터링하는 방법은 무엇입니까?
요청은 전체 목록에 대한 정규식 필터를 지원하고 일치하는 항목 만 표시하는 것입니다.
예
가목록이 포함
regex = re.compile(r"{0}".format(entry_value), re.IGNORECASE)
display_list = list(filter(regex.search, display_list))
:
엔트리 여기
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
에
abc.efg.hij.entry
abc.ddd.hij.entry2
hij.some.value.entry
타이핑 제가리스트를 필터링 사용하고 코드는
실생활의 리 st에는 ~ 300K 개의 문자열 항목 (각각 최대 100 자까지)이 포함되어 있으며 GUI 응답 시간을 고려하면 위의 성능이 매우 좋지 않습니다. 필자는 실제 테스트 케이스를 프로파일 링했으며 엔트리의 각 키 입력에 대해 ~ 0.8s를 산출했습니다.
더 빠른 방법이 있습니까?
고맙습니다 - 우수한 팁 - 메모리 내 데이터베이스를 sqlite3으로 옮겼습니다. 필터 시간이 100ms (x8 최적화) 이하로 떨어졌습니다. 목록 상자 자체는 이미 최적화되어 있습니다 (필터 된 목록의 일부만 표시하고 사용자가 검색 할 수 있도록 ...). – NirMH