欢迎访问宙启技术站
智能推送

Python中的Sorted函数:对列表、字典和集合进行排序

发布时间:2023-06-12 22:25:38

在Python中,有一个非常常用和方便的函数——sorted。这个函数可以对列表、字典和集合三种数据类型进行排序。下面我们就来看一看这个函数在排序上具有什么样的优势和使用方式。

一、列表排序

1、sort()函数

在Python中,我们可以通过sort()函数对列表进行排序。这个函数可以修改原来的列表,并且以升序排序为默认方式。

例如:

lst = [3, 6, 1, 8, 4, 9]
lst.sort()
print(lst)

输出结果就是:

[1, 3, 4, 6, 8, 9]

如果想要使用降序排序,可以使用sort()函数中的reverse参数,将其设置为True。

例如:

lst = [3, 6, 1, 8, 4, 9]
lst.sort(reverse=True)
print(lst)

输出结果就是:

[9, 8, 6, 4, 3, 1]

但是需要注意的是,sort()函数不可用于其他的数据类型,只适用于列表。

2、sorted()函数

除了sort()函数之外,Python还提供了sorted()函数。与sort()函数不同的是,sorted()函数可以对任意迭代对象进行排序,并且返回一个新的列表。

例如:

lst = [3, 6, 1, 8, 4, 9]
new_lst = sorted(lst)
print(new_lst)

输出结果就是:

[1, 3, 4, 6, 8, 9]

另外,如果想使用降序排序,也可以通过sorted()函数中的reverse参数,将其设置为True。

例如:

lst = [3, 6, 1, 8, 4, 9]
new_lst = sorted(lst, reverse=True)
print(new_lst)

输出结果就是:

[9, 8, 6, 4, 3, 1]

二、字典排序

如果想要对字典进行排序,需要先将字典转为列表,再使用sorted()函数进行排序。在转换过程中,字符型变量的排序顺序是根据ASCII值来的。

例如:

d = {'a': 2, 'b': 5, 'c': 1, 'd': 4}
new_lst = sorted(d.items(), key=lambda x: x[0])
print(new_lst)

输出结果就是:

[('a', 2), ('b', 5), ('c', 1), ('d', 4)]

这里我们使用了sorted()函数,其泛化程度十分高,无论是对于列表还是字典,都可以使用。

sorted()函数的 个参数接受一个可迭代类型的对象,例如列表或者字典的.items()方法返回的键值对。接下来的关键字参数key是一个函数,对于可迭代对象中的每个元素,都会调用这个函数来确定排序依据。在上面的代码中,我们使用了lambda表达式来定义一个匿名函数,该函数返回字典中每个键的值。这样,sorted()函数会根据键的值对字典进行排序。

例如:

d = {'a': 2, 'b': 5, 'c': 1, 'd': 4}
new_lst = sorted(d.items(), key=lambda x: x[1])
print(new_lst)

输出结果就是:

[('c', 1), ('a', 2), ('d', 4), ('b', 5)]

这里我们将排序依据改为了字典中每个键的值。结果就是以字典中每个键的值作为排序依据,对字典进行了排序。

三、集合排序

集合和字典一样,是无序的。在Python中,如果我们想要对集合进行排序,需要先将集合转为列表,再使用sorted()函数。

例如:

s = {3, 6, 1, 8, 4, 9}
new_lst = sorted(list(s))
print(new_lst)

输出结果就是:

[1, 3, 4, 6, 8, 9]

在这个例子中,我们先将集合转换为列表,再使用sorted()函数进行排序。如果想要使用降序排序,只需要在sorted()函数中添加一个reverse参数,将其设置为True即可。

例如:

s = {3, 6, 1, 8, 4, 9}
new_lst = sorted(list(s),reverse=True)
print(new_lst)

输出结果就是:

[9, 8, 6, 4, 3, 1]

总之,sorted()函数可以适用于各种数据类型排序,且使用非常方便,对于排序任务来说是很有助于提高编程效率的。希望本文能为大家提供帮助。