打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python:Sorted()函数的key参数使用
userphoto

2024.05.08 黑龙江

关注

一、sorted函数
sorted() 函数是 Python 内置的一种排序函数,它可以对序列进行排序,并且返回排序后的结果。该函数的语法格式如下:

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

其中,iterable 是待排序的元素集合,可以是列表、元组、字典等可迭代对象。key 和 reverse 是可选参数。

key 参数用于指定一个函数,该函数将应用于待排序的每个元素上,获取用于排序的关键字(key)。具体来说,key 参数需要传递一个函数,它会取待排序元素作为输入,并返回一个用于定制排序的关键字。默认为 None,表示直接比较待排序元素本身进行排序。
reverse 参数是一个布尔值,用于决定排序顺序。默认值为 False,表示升序排序。如果将该参数指定为 True,则表示降序排序。
下面举一个例子,说明在实际应用中 sorted() 函数的用法:

from collections import namedtuple

# 构造一个命名元组类型
Person = namedtuple('Person', ['name', 'age', 'gender'])

# 创建一个 Person 的列表
people = [
    Person('Alice', 22, 'F'),
    Person('Bob', 35, 'M'),
    Person('Charlie', 28, 'M'),
    Person('David', 28, 'M'),
    Person('Eva', 21, 'F')
]

# 按年龄进行升序排序
people_by_age = sorted(people, key=lambda p: p.age)
print(people_by_age)

# 按姓名的首字母进行降序排序
people_by_first_letter = sorted(people, key=lambda p: p.name[0], reverse=True)
print(people_by_first_letter)

===结果===
[Person(name='Eva', age=21, gender='F'), Person(name='Alice', age=22, gender='F'), Person(name='Charlie', age=28, gender='M'), Person(name='David', age=28, gender='M'), Person(name='Bob', age=35, gender='M')]
[Person(name='Eva', age=21, gender='F'), Person(name='David', age=28, gender='M'), Person(name='Charlie', age=28, gender='M'), Person(name='Bob', age=35, gender='M'), Person(name='Alice', age=22, gender='F')]

在上述代码中,我们使用了 namedtuple 来定义了一个名为 Person 的命名元组类型,并创建了一个 people 列表来保存多个 Person 的实例。

我们使用 sorted() 函数对 people 列表进行了升序和降序排序。升序排序是通过 key 参数指定了按照 Person 对象的 age 属性进行排序,而降序排序是通过 key 参数指定了按照 Person 对象的 name 属性的第一个字母的 ASCII 值进行排序。

当需要对复杂的数据结构进行排序时,我们经常需要自定义排序规则。此时,我们可以通过将自定义的函数作为 key 参数赋值,来实现对数据结构按照任意排序规则进行排序。

下面就给出一个示例,其中 key 参数通过一个自定义的函数实现对一个包含学生信息的列表进行按照成绩降序排序:

# 定义一个包含学生信息的列表
students = [('Alice', 95), ('Bob', 83), ('Charlie', 72), ('David', 90), ('Eva', 87)]

# 使用一个自定义的函数,对学生信息按照成绩降序排序
def sort_by_score(student):
    return student[1]

students_sorted_by_score = sorted(students, key=sort_by_score, reverse=True)
print(students_sorted_by_score)
===输出结果如下所示:===
[('Alice', 95), ('David', 90), ('Eva', 87), ('Bob', 83), ('Charlie', 72)]

在上述代码中,我们首先定义了一个包含多个学生信息的列表 students,每个学生信息包含了姓名和成绩两个元素。接下来,我们定义了一个自定义函数 sort_by_score,该函数的输入参数是一个学生信息,我们将该学生信息的成绩作为排序的关键字。

通过将 sort_by_score 函数赋值给 sorted() 函数中的 key 参数,我们就实现了对学生列表按照学生成绩进行降序排序的目的vb.net教程C#教程python教程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/s1_0_2_4/article/details/135413911

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何对数据进行各种排序?
python 列表排序方法sort、sorted技巧篇
解密可迭代对象的排序问题
python中的sort方法使用详解
Python:如何根据字典值大小,对字典排序
sorted()函数--python
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服