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

利用Python中的sorted()函数——对序列进行排序

发布时间:2023-06-24 19:58:05

Python是一种高级编程语言,具有易读、易学、易写和易调试等特点。在Python中,提供了一种非常便捷的排序函数,即sorted()函数。sorted()函数可以对列表、元组、字典、集合等序列进行排序,本文将围绕这一函数展开。

一、sorted()函数的基本用法

sorted()函数是Python内置的一个函数,其作用是对序列进行排序。其基本语法如下:

sorted(iterable, key=None, reverse=False)

其中,参数iterable表示要排序的序列,可以是列表、元组、字典、集合等。参数key表示可以进行比较的键值,reverse表示排序顺序,True为降序,False为升序。

下面举例说明:

a=[1,3,2,7,6,5] #定义一个列表a

b=sorted(a) #对列表a进行排序,返回一个新的列表b

print(b) #[1,2,3,5,6,7]

在这个例子中,首先我们定义一个列表a,然后使用sorted()函数对a进行排序,并将排序后的结果赋值给变量b,最后输出变量b。

在排序过程中,如果存在相等的元素,sorted()函数会按照原来的顺序进行排序。

二、sorted()函数的高级用法

sorted()函数不仅可以对基本的序列进行排序,还可以通过自定义函数的方式来灵活地处理排序过程。

1. 对字典进行排序

字典是一种无序的数据类型,如果需要进行排序,需要将其转化为有序的数据结构。为了将字典按照某个键值进行排序,我们需要定义一个比较函数,作为参数传递给sorted()函数。

下面举例说明:

d={'a':3,'b':2,'c':1} #定义一个字典d

print(d) #{'a':3,'b':2,'c':1}

d_sorted=sorted(d.items(),key=lambda x:x[1]) #对字典d按照值进行排序

print(d_sorted) #[('c',1),('b',2),('a',3)]

在这个例子中,我们首先定义了一个字典d,然后使用sorted()函数对字典d进行排序。传递给sorted()函数的参数是字典d.items(),其中d.items()返回的是字典d中所有键值对的元组,例如:[('a',3),('b',2),('c',1)]。

在sorted()函数中,我们使用匿名函数lambda定义了一个比较函数,按照键值对中的 个元素(键)进行比较。显然,这样的排序方式不太合理,因此我们需要修改比较函数,按照值进行排序。

在比回调函数中,我们使用键值对中的第二个元素(值)进行比较。最后,sorted()函数返回一个新的有序的键值对列表d_sorted。

2. 对多个键值进行排序

在实际应用中,我们很可能需要按照多个条件进行排序。这时,我们可以在sorted()函数中使用多个比较函数,逐个比较每一个条件,直到找到最终的排序结果。

下面举例说明:

students=[{'name':'Tom','age':19,'score':99},

          {'name':'Jerry','age':20,'score':90},

          {'name':'Bob','age':18,'score':95},

          {'name':'Lucy','age':21,'score':92}] #定义一个学生列表

students_sorted=sorted(students,key=lambda x:(x['score'],x['age'])) #按照成绩和年龄排序

print(students_sorted)

在这个例子中,我们使用列表students表示学生信息。每一个学生都是一个字典,包含姓名、年龄和成绩三个键值对。

为了按照成绩和年龄进行排序,我们传递给sorted()函数的参数是一个匿名函数,其中 个比较函数按照成绩进行比较,第二个比较函数按照年龄进行比较。 最后,sorted()函数返回一个新的有序的学生列表students_sorted,按照成绩从小到大,年龄从小到大的顺序排列。

三、总结

本文介绍了Python中的sorted()函数,对其基本用法和高级用法进行了详细的讲解。sorted()函数是Python中一种非常实用的函数,它可以对多种类型的序列进行排序,同时也支持用户通过自定义函数的方式来完成排序操作,满足了不同场景下的实际需求,非常值得我们掌握和使用。