解决list转换为set的时候会自动排序的问题

问题的来源是有人在群里问写了个list去掉重复元素的程序,但是有bug,说要帮忙看看。我直接回可以将list转换为set直接去掉,但是set会自动排序,不是想要的。

于是google了一把,发现set确实没有直接的办法阻止其排序,但是有另外一个解决方法,就是collections.OrderedDict。具体做法是将list转换为collections.OrderedDict,然后读取器key,就是我们需要的list。

 

>>> list = ['a','d','d','b']
>>> list
['a', 'd', 'd', 'b']
>>> set(list)
set(['a', 'b', 'd'])
>>> set(list)
set(['a', 'b', 'd'])
>>>
>>> frozenset(list)
frozenset(['a', 'b', 'd'])
>>>
>>> import collections
>>> collections.OrderedDict.fromkeys(list)
OrderedDict([('a', None), ('d', None), ('b', None)])
>>> collections.OrderedDict.fromkeys(list).keys()
['a', 'd', 'b']

你可能感兴趣的:(解决list转换为set的时候会自动排序的问题)