2

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

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

任何想法更好的解决方案?

4

4 回答 4

6

使用sorted()

sorted(set(a))

你可以完全省略list()调用。

于 2012-10-30T10:31:35.357 回答
1

它很简单只需使用以下sorted()方法:

data = [10,5,46,4]
sorted_data = sorted(data)
print "Sorted Data ::::",sorted_data
于 2012-10-30T10:44:01.600 回答
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)
于 2012-10-30T11:22:23.677 回答
-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))
于 2012-10-30T11:41:17.633 回答