如何在一个语句中获得唯一的排序列表?

时间:2012-10-30 10:30:32

标签: python

sort()的返回值为None,因此以下代码不起作用:

def sorted_unique_items(a):
   return list(set(a)).sort()

有什么想法可以提供更好的解决方案吗?

4 个答案:

答案 0 :(得分:6)

使用sorted()

sorted(set(a))

您可以完全省略list()来电。

答案 1 :(得分:1)

简单只需使用sorted()方法:

data = [10,5,46,4]
sorted_data = sorted(data)
print "Sorted Data ::::",sorted_data

答案 2 :(得分:0)

上面的解决方案只适用于像字符串,整数和元组这样的可散列类型,但它不适用于像列表这样的不可用类型。

例如,如果您有一个列表data= [[2],[1],[2],[4]]

对于不可用类型的最佳解决方案是:

from itertools import izip, islice

values= [[2],[1],[2],[4]]

def sort_unique_unhashable(values):

    values = sorted(values)
    if not values:
        return []
    consecutive_pairs = izip(values, islice(values, 1, len(values)))
    result = [a for (a, b) in consecutive_pairs if a != b]
    result.append(values[-1])
    return result
print sort_unique_unhashable(values)

答案 3 :(得分:-1)

有两种选择:

a = [2,34,55,1,22,11,22,55,1]

#First option using sorted and set. 
sorted(set(a))

#second option using list and set.
list(set(a))