在生成排序列表的集合时,输出集未排序

时间:2017-08-25 19:41:05

标签: python sorting set

有人可以向我解释为什么从排序列表中创建一个集合会产生一个未排序的集合吗?

list.sort()应该按原样对列表进行排序。 set(list)应该返回列表的唯一值,就像它一样。

但为什么结果集没有排序?我是否需要创建一个集合,将其转回list2然后对list2进行排序?

(使用Python 2.7.6)

代码:

def longest(s1, s2):
    list = []
    s = s1 + s2
    for letter in s:
        list.append(letter)
    print list
    list.sort()
    print list
    unique = set(list)
    print unique
    s4 = ""
    for item in unique:
        s4 = s4 + item
    print s4
    return s4

控制台输出:

['a', 'r', 'e', 't', 'h', 'e', 'y', 'h', 'e', 'r', 'e', 'y', 'e', 's', 't', 'h', 'e', 'y', 'a', 'r', 'e', 'h', 'e', 'r', 'e']
['a', 'a', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'h', 'h', 'h', 'h', 'r', 'r', 'r', 'r', 's', 't', 't', 'y', 'y', 'y']
set(['a', 'e', 'h', 's', 'r', 't', 'y'])
aehsrty

3 个答案:

答案 0 :(得分:0)

Python集本质上是无序的。如果订单很重要,您可以使用ordered-set包裹。

https://pypi.python.org/pypi/ordered-set

答案 1 :(得分:0)

集合本质上是一种无序的数据结构。对于Python 2.7,该集合不一定保持顺序,但在Python 3.x中,应该保留顺序。

答案 2 :(得分:0)

Set仅确保它具有唯一元素,并且默认情况下不排序。

您需要使用sorted(set(list))