【问题标题】:When making a set out of sorted list, the output set is not sorted [duplicate]从排序列表中制作集合时,输出集未排序[重复]
【发布时间】:2017-08-25 19:41:04
【问题描述】:

谁能向我解释为什么从排序列表中创建一个集合会导致一个未排序的集合?

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

【问题讨论】:

  • Set 没有排序,那么为什么要实现一个返回它们排序的函数呢?如果您想要一个排序集,请使用sorted(set(x)),如下所述:stackoverflow.com/questions/15181867/…
  • 集合根据定义是无序的

标签: python sorting set


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢,已修复,从手机输入。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多