Python排序函数sorted()详解

Python排序函数sorted()详解

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,包含nameage属性。我们希望根据学生的年龄进行升序排序。以下是示例代码:

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,它有nameage两个属性。我们创建了一个学生列表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,它有nameage两个属性。我们创建了一个人的列表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中非常有用的排序函数,它允许我们根据自定义的规则对可迭代对象进行排序。在本文中,我们讨论了按照元素长度、对象属性、多个条件和字典值排序的示例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程