利用Python中的sorted()函数——对序列进行排序
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中一种非常实用的函数,它可以对多种类型的序列进行排序,同时也支持用户通过自定义函数的方式来完成排序操作,满足了不同场景下的实际需求,非常值得我们掌握和使用。
