问题
你想排序类型相同的对象,但是他们不支持原生的比较操作。
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》