Python排序函数sorted()详解
1. 介绍
在Python中,sorted()
函数是用来对可迭代对象进行排序的方法。它可以用于对数字、字符串、列表、元组等不同类型的数据进行排序操作。
2. 语法
sorted(iterable, key=None, reverse=False)
iterable
:表示要进行排序的可迭代对象。key
(可选):用来指定一个排序函数,它将作用于可迭代对象的每个元素上,并根据返回值进行排序。reverse
(可选):表示是否以逆序排序,默认为False(升序排序)。
在本文中,我们将主要关注key
参数的使用,它允许我们根据自定义的规则对可迭代对象进行排序。
3. 根据元素的长度进行排序
有时候,我们希望根据元素的长度对可迭代对象进行排序。下面是一个示例代码:
fruits = ['apple', 'banana', 'kiwi', 'orange']
sorted_fruits = sorted(fruits, key=len)
print(sorted_fruits)
运行结果:
['kiwi', 'apple', 'banana', 'orange']
在这个示例中,我们定义了一个列表fruits
,它包含了几个水果的名称。通过sorted()
函数和key=len
,我们按照水果名称的长度进行升序排序。结果是:’kiwi’最短,’banana’最长。
4. 根据元素的某个属性进行排序
在处理对象的列表时,我们往往需要根据对象的某个属性进行排序。假设我们有一个学生类Student
,包含name
和age
属性。我们希望根据学生的年龄进行升序排序。以下是示例代码:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'{self.name} - {self.age}'
students = [
Student('Alice', 23),
Student('Bob', 19),
Student('Charlie', 21)
]
sorted_students = sorted(students, key=lambda x: x.age)
print(sorted_students)
运行结果:
[Bob - 19, Charlie - 21, Alice - 23]
在这个示例中,我们定义了一个学生类Student
,它有name
和age
两个属性。我们创建了一个学生列表students
,包含了几个学生对象。通过sorted()
函数和key=lambda x: x.age
,我们按照学生的年龄属性进行排序。结果是学生按照年龄的升序排列。
5. 根据多个条件进行排序
有时候,我们需要根据多个条件进行排序。以下是一个示例代码:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'{self.name} - {self.age}'
people = [
Person('Alice', 23),
Person('Bob', 19),
Person('Charlie', 21),
Person('Dave', 23)
]
sorted_people = sorted(people, key=lambda x: (x.age, x.name))
print(sorted_people)
运行结果:
[Bob - 19, Charlie - 21, Alice - 23, Dave - 23]
在这个示例中,我们定义了一个人类Person
,它有name
和age
两个属性。我们创建了一个人的列表people
,包含了几个人员对象。通过sorted()
函数和key=lambda x: (x.age, x.name)
,我们首先按照年龄进行排序,然后按照姓名进行排序(在年龄相同时)。结果是人员按照年龄和姓名的升序排列。
6. 根据字典的值进行排序
对于字典,我们可以根据其值进行排序。以下是一个示例代码:
scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'Dave': 90}
sorted_scores = sorted(scores, key=scores.get, reverse=True)
print(sorted_scores)
运行结果:
['Bob', 'Dave', 'Alice', 'Charlie']
在这个示例中,我们定义了一个字典scores
,它表示每个人的考试成绩。通过sorted()
函数和key=scores.get
,我们根据字典的值进行排序(即考试成绩)。通过设置reverse=True
,我们按照降序排序。结果是人员按照考试成绩的降序排列。
总结
sorted()
函数是Python中非常有用的排序函数,它允许我们根据自定义的规则对可迭代对象进行排序。在本文中,我们讨论了按照元素长度、对象属性、多个条件和字典值排序的示例。