服务器之家

服务器之家 > 正文

python教程对函数中的参数进行排序

时间:2022-01-13 00:26     来源/作者:沉沉沉小姐

内建的 sorted() 函数可接受一个用来传递可调用对象( callable ) 的参数 key,而该可调用对象会返回待排序对象中的某些值,sorted则利用这些值来比较对象。

例如,如果应用中有一系列的 User 对象实例,而我们想通过 user_id 属性来对他们排序,则可以提供一个可调用对象将 User 实例作为输入然后返回 user_id。

?
1
2
3
4
5
6
7
8
9
10
11
12
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()

?
1
2
3
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() 这样的函数。

?
1
2
3
4
min(Users, key=attrgetter('user_id'))
# User(3)
max(Users, key=attrgetter('user_id'))
# User(99)

以上就是python教程对函数中的参数进行排序的详细内容,更多关于Python参数排序的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/chenyuhuaxin/article/details/100621016

标签:

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部