Ich habe eine Liste von 5 Millionen String-Elementen, die als Pickle-Objekt gespeichert sind.Ändert die Python-Liste (set (a)) jedes Mal ihre Reihenfolge?
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']
Duplikate zu entfernen, ich set(a)
verwenden, dann habe ich es eine Liste wieder durch list(set(a))
.
Meine Frage ist:
Auch wenn ich Python neu zu starten, und die Liste aus der Beize Datei lesen, wird die Reihenfolge der list(set(a))
jedes Mal gleich sein?
Ich bin gespannt, wie diese Hash -> Liste Bestellung funktioniert.
Ich habe mit einem kleinen Datensatz getestet und es scheint eine konsistente Reihenfolge zu haben.
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']
Es auf jeden Fall in der Hashing-Verfahren beteiligt ein Zufallselement ist. –
Für den Anfang ist die Reihenfolge der Hash nicht garantiert, so dass die Reihenfolge der Liste auch nicht garantiert werden würde. – Makoto
Ich denke, Sie können [geordneten-set] (https://pypi.python.org/pypi/ordered-set) anstelle von 'set' verwenden – MaxU