|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
对不原生支持比较操作的对象进行排序
问题描述:
对某个类的实例对象之间比较,但他们都不原生支持比较操作
借助operator库attrgetter方法
一、与一些运算函数的配合class Student:
def __init__(self, name, uid) -> None:
self.name = name
self.uid = uid
def __repr__(self) -> str:
return f"{self.name}是{self.uid}"
students = [Student("小明", "002"), Student("小亮", "001"), Student("小齐", "003")]
# 排序 sorted
print(sorted(students, key=attrgetter("uid")))
print(max(students, key=lambda s: s.uid))
[小亮是001, 小明是002, 小齐是003]
小齐是003
二、lambda的代替print(sorted(students, key=attrgetter("uid")))
print(sorted(students, key=lambda s: s.uid))
print(max(students, key=lambda s: s.uid))
print(max(students, key=attrgetter("uid")))
[小亮是001, 小明是002, 小齐是003]
小齐是003
attrgetter同样支持多参数,也和itemgetter一样处理速度比lambda快
|
|