给定一个字符串列表,我想按字母顺序对其进行排序并删除重复项.我知道我可以这样做:
from sets import Set [...] myHash = Set(myList)
但我不知道如何按字母顺序从散列中检索列表成员.
我没有和哈希结婚,所以任何方法都可以实现.此外,性能不是问题,因此我更倾向于使用代码清楚地表达一个快速但更不透明的解决方案.
可以使用内置函数对列表进行排序和重复数据删除:
myList = sorted(set(myList))
set
是Python> = 2.3的内置函数
sorted
是Python> = 2.4的内置函数
如果您的输入已经排序,那么可能有一种更简单的方法:
from operator import itemgetter from itertools import groupby unique_list = list(map(itemgetter(0), groupby(yourList)))
如果要保持原始列表的顺序,只需使用OrderedDict与None
作为值。
在Python2中:
from collections import OrderedDict from itertools import izip, repeat unique_list = list(OrderedDict(izip(my_list, repeat(None))))
在Python3中,它甚至更简单:
from collections import OrderedDict from itertools import repeat unique_list = list(OrderedDict(zip(my_list, repeat(None))))
如果您不喜欢迭代器(压缩和重复),则可以使用生成器(在2和3中均可使用):
from collections import OrderedDict unique_list = list(OrderedDict((element, None) for element in my_list))