1.14 排序不支持原生比较的对象 operator.attrgetter()

问题
你想排序类型相同的对象,但是他们不支持原生的比较操作。

class User:
    def __init__(self,user_id):
        self.user_id=user_id
    def __repr__(self):
        return "User({})".format(self.user_id)
# 方法一
def sort_notcompare():
    users=[User(23),User(3),User(99)]
    print(users)
    print(sorted(users,key=lambda u:u.user_id))

y=sort_notcompare()
# 方法二
from operator import attrgetter
users=[User(23),User(3),User(99)]
print(sorted(users,key=attrgetter('user_id')))   # ->[User(3), User(23), User(99)]
# 同样需要注意的是,这一小节用到的技术同样适用于像 min() 和 max() 之类的函数。
print(min(users, key=attrgetter('user_id'))) #User(3)

参考文档:《python cookbook(第3版)高清中文完整版(###).pdf》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值