python list(set(a))每次都改变它的顺序吗?

Aer*_*rin 7 python list set

我有一个包含500万个字符串元素的列表,这些元素存储为pickle对象.

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']
Run Code Online (Sandbox Code Playgroud)

为了删除重复项,我使用set(a),然后我再次通过列表list(set(a)).

我的问题是:

即使我重新启动python,并从pickle文件中读取列表,list(set(a))每次的顺序是否相同?

我很想知道这个哈希 - >列表排序是如何工作的.


我测试了一个小数据集,它似乎有一致的排序.

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']
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 2

我建议使用辅助工具set()来确保在列表中添加项目时的唯一性,从而保留 的顺序list(),而不是存储其set()本身。

首先,加载列表并使用内容创建一个集合在将项目添加到列表之前,检查它们是否不在集合中(使用集合中的“in”而不是列表进行搜索要快得多,特别是在有很多元素的情况下)选择您的清单,订单将正是您想要的

缺点:占用的内存比仅处理一个set()