Tôi có danh sách 5 triệu phần tử chuỗi, được lưu trữ dưới dạng đối tượng dưa.Danh sách python (set (a)) có thay đổi thứ tự của nó không?
a = ['https://en.wikipedia.org/wiki/Data_structure','https://en.wikipedia.org/wiki/Data_mining','https://en.wikipedia.org/wiki/Statistical_learning_theory','https://en.wikipedia.org/wiki/Machine_learning','https://en.wikipedia.org/wiki/Computer_science','https://en.wikipedia.org/wiki/Information_theory','https://en.wikipedia.org/wiki/Statistics','https://en.wikipedia.org/wiki/Mathematics','https://en.wikipedia.org/wiki/Signal_processing','https://en.wikipedia.org/wiki/Sorting_algorithm','https://en.wikipedia.org/wiki/Data_structure','https://en.wikipedia.org/wiki/Quicksort','https://en.wikipedia.org/wiki/Merge_sort','https://en.wikipedia.org/wiki/Heapsort','https://en.wikipedia.org/wiki/Insertion_sort','https://en.wikipedia.org/wiki/Introsort','https://en.wikipedia.org/wiki/Selection_sort','https://en.wikipedia.org/wiki/Timsort','https://en.wikipedia.org/wiki/Cubesort','https://en.wikipedia.org/wiki/Shellsort']
Để loại bỏ bản sao, tôi sử dụng set(a)
, sau đó tôi đã làm cho nó một danh sách một lần nữa thông qua list(set(a))
.
Câu hỏi của tôi là:
Ngay cả khi tôi khởi động lại python, và đọc danh sách từ file dưa, sẽ theo thứ tự của list(set(a))
giống nhau mỗi lần?
Tôi mong muốn biết cách hoạt động của danh sách băm -> này.
Tôi đã thử nghiệm với một tập dữ liệu nhỏ và dường như có thứ tự nhất quán.
In [50]: a = ['x','y','z','k']
In [51]: a
['x', 'y', 'z', 'k']
In [52]: list(set(a))
['y', 'x', 'k', 'z']
In [53]: b=list(set(a))
In [54]: list(set(b))
['y', 'x', 'k', 'z']
In [55]: del b
In [56]: b=list(set(a))
In [57]: b
['y', 'x', 'k', 'z']
có chắc chắn là một yếu tố ngẫu nhiên tham gia vào quá trình băm. –
Để bắt đầu, thứ tự của băm không được bảo đảm, do đó thứ tự của danh sách sẽ không được đảm bảo. – Makoto
Tôi đoán bạn có thể sử dụng [order-set] (https://pypi.python.org/pypi/ordered-set) thay vì 'set' – MaxU