我有一个包含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']
要删除重复项,我使用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']
答案 0 :(得分:2)
我建议使用辅助set()
来确保在列表中添加项目时的单一性,从而保留list()
的顺序,而不是存储set()
本身。
首先,加载列表并创建包含内容的集合 在将项目添加到列表之前,请检查它们是否在集合中(使用集合而不是列表中的“in”进行更快的搜索,特别是如果有很多元素) 挑选你的清单,订单将是你想要的那个
缺点:占用的内存是仅处理set()