在 Python 中对集合进行排序

Hemank Mehtani 2023年1月30日
  1. 在 Python 中使用 sorted() 函数对集合进行排序
  2. 在 Python 中使用 sort() 方法对集合进行排序
在 Python 中对集合进行排序

集合是一个无序且无索引的集合,没有重复的元素。集合是 Python 中可用的四种内置数据类型之一,使用大括号编写。

鉴于集合是无序的,不可能对集合的值进行排序。但是,如果我们打印一个集合,它会以排序的方式显示。

请参考下面的代码。

s = {5, 2, 7, 1, 8}
print(s)

输出:

{1, 2, 5, 7, 8}

如果我们愿意,我们可以使用不同的函数对一个集合进行排序并返回一个列表。这些将在下面讨论。

在 Python 中使用 sorted() 函数对集合进行排序

sorted() 函数是 Python 中的内置函数,它以列表的形式返回已排序的序列(列表、元组、字符串)或已排序的集合(集合、字典)。sorted() 函数对原始可迭代序列没有影响,因为它提供了一个新的排序输出。

例如,

s = {5, 2, 7, 1, 8}
print(sorted(s))

输出:

[1, 2, 5, 7, 8]

请注意,sorted() 函数返回一个列表而不是一个集合。我们可以再次使用 set() 函数将此列表转换为集合。然而,这是多余的,因为集合是无序的。

在 Python 中使用 sort() 方法对集合进行排序

sort() 方法用于按升序或降序对列表中给定的元素进行排序。这是一个破坏性的过程,即与 sorted() 函数不同,sort() 方法对原始列表本身中的元素进行排序。

我们不能在集合中使用这个函数。但是,我们可以将一个集合包含在一个列表中,它会对它们进行排序。

例如,

s = [{5, 2, 7, 1, 8}]
s.sort()
print(s)

输出:

[{1, 2, 5, 7, 8}]

请注意,sort() 函数还会返回列表中的最终输出。我们也可以对 sorted() 函数采取类似的方法。

另一方面,我们可以使用 list() 函数将集合转换为列表,并使用此方法对其进行排序。

请参考下面的代码。

s = {5, 2, 7, 1, 8}
l = list(s)
l.sort()
print(l)

输出:

[1, 2, 5, 7, 8]