Python 官方文档:入门教程 => 点击学习
内建的 sorted() 函数可接受一个用来传递可调用对象( callable ) 的参数 key,而该可调用对象会返回待排序对象中的某些值,sorted则利用这些值来比较对象。 例
内建的 sorted() 函数可接受一个用来传递可调用对象( callable ) 的参数 key,而该可调用对象会返回待排序对象中的某些值,sorted则利用这些值来比较对象。
例如,如果应用中有一系列的 User 对象实例,而我们想通过 user_id 属性来对他们排序,则可以提供一个可调用对象将 User 实例作为输入然后返回 user_id。
class User:
def __init__(self, user_id):
self.user_id = user_id
def __repr__(self):
return 'User({})'.fORMat(self.user_id)
users = [User(23), User(3), User(99)]
print(users)
# [User(23), User(3), User(99)]
sorted(users, key=lambda u: user_id)
# [User(3), User(23), User(99)]
除了可以用 lambda 表达式外,另一种方式是使用 operator.attrgetter()
from operator import attrgetter
sorted(users, key=attrgetter('user_id'))
# [User(3), User(23), User(99)]
要使用 lambda 表达式还是 attrgetter() 或许只是一种个人喜好。但是通常来说,attrgetter() 要更快一些,而且允许同时提取多个字段值的能力。
这和针对字典的 operator.itemgetter() 的使用很类似。
如果 User 实例还有一个 first_name 和 last_name 属性的话,可以执行如下的排序操作:
by_name = sorted(users, key=attrgetter('last_name', 'first_name'))
同样,本节所用到的技术也使用于像 min() 和 max() 这样的函数。
min(Users, key=attrgetter('user_id'))
# User(3)
max(Users, key=attrgetter('user_id'))
# User(99)
--结束END--
本文标题: python教程对函数中的参数进行排序
本文链接: https://lsjlt.com/news/137088.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0