- Tôi vừa phân tích cú pháp một tệp lớn và tạo danh sách chứa 42.000 chuỗi/từ. Tôi muốn truy vấn [chống lại danh sách này] để kiểm tra xem một từ/chuỗi đã cho thuộc về nó hay không. Vì vậy, câu hỏi của tôi là:Cách hiệu quả nhất để tra cứu/tìm kiếm trong một danh sách lớn (python)
Cách hiệu quả nhất để tìm kiếm như vậy là gì?
Một cách tiếp cận đầu tiên là để sắp xếp danh sách (list.sort()
) và sau đó chỉ cần sử dụng
>> if word in list: print 'word'
mà thực sự tầm thường và tôi chắc chắn có một cách tốt hơn để làm điều đó. Mục tiêu của tôi là áp dụng tra cứu nhanh để tìm xem liệu một chuỗi đã cho có nằm trong danh sách này hay không. Nếu bạn có bất kỳ ý tưởng nào về cấu trúc dữ liệu khác, chúng được hoan nghênh. Tuy nhiên, bây giờ tôi muốn tránh các cấu trúc dữ liệu phức tạp hơn như Tries ... Tôi thích nghe ý tưởng (hoặc thủ thuật) về tra cứu nhanh hoặc bất kỳ phương thức thư viện python nào khác có thể thực hiện tìm kiếm nhanh hơn đơn giản in
.
Và cũng tôi muốn biết chỉ số của mặt hàng đó tìm kiếm
Thanks a lot THC4k cho câu trả lời chi tiết của bạn. Trên thực tế tôi đã suy nghĩ để áp dụng một tìm kiếm nhị phân bản thân mình, nhưng như tôi thấy đó là những gì các loại mô-đun bisect nào anyway, vì vậy bạn đã tiết kiệm thời gian của tôi :). Một lần nữa cảm ơn sự giúp đỡ của bạn. – user229269
@ user229269, bạn đã bám vào phần sai của bài đăng! Bạn có thể muốn có một 'bộ', không phải là một' danh sách' nào cả. –
@ Mike Graham Tôi biết những gì bạn đang nói, nhưng tôi e rằng tôi có thể gặp vấn đề về bộ nhớ nếu tôi sử dụng các bộ, xem danh sách của tôi thực sự là một danh sách từ đang phát triển nhanh sẽ có tới 100.000 chuỗi và nhiều hơn nữa – user229269