- Właśnie sparsowałem duży plik i utworzyłem listę zawierającą 42 000 ciągów/słów. Chcę zapytać [z tej listy], aby sprawdzić, czy dane słowo/ciąg znaków należy do niego. Więc moje pytanie brzmi:Najbardziej efektywny sposób wyszukiwania/wyszukiwania na ogromnej liście (python)
Jaki jest najbardziej skuteczny sposób takiego wyszukiwania?
Pierwsze podejście jest, aby posortować listę (list.sort()
), a następnie po prostu użyć
>> if word in list: print 'word'
który jest naprawdę trywialne i jestem pewien, że istnieje lepszy sposób to zrobić. Moim celem jest zastosowanie szybkiego wyszukiwania, które wyszuka, czy dany ciąg jest na tej liście, czy nie. Jeśli masz jakieś pomysły na inną strukturę danych, są mile widziane. Jednak chcę teraz na razie unikać bardziej wyrafinowanych struktur danych, takich jak Tries itp. Interesują mnie pomysły (lub triki) dotyczące szybkiego wyszukiwania lub jakiejkolwiek innej metody biblioteki Pythona, która może wykonać wyszukiwanie szybciej niż proste in
.
A także chcę wiedzieć indeks szukanej
Thanks a lot THC4k za szczegółową odpowiedź. Właściwie to myślałem o samodzielnym wyszukiwaniu binarnym, ale jak widzę, tak właśnie działa moduł bisect, więc zaoszczędziłeś mój czas :). Ponownie, dzięki za pomoc. – user229269
@ user229269, zablokowałeś się na niewłaściwej części postu! Prawdopodobnie chcesz "ustawić", a nie "listę" w ogóle. –
@Mike Graham Wiem, co mówisz, ale obawiam się, że mogę napotkać problemy z pamięcią, jeśli używam zestawów, biorąc pod uwagę, że moja lista jest rzeczywiście szybko rosnącą listą słów, która kończy się być tak duża jak 100 000 ciągów i więcej – user229269