# 众所周知,对class这种原生不支持比较的对象直接进行比较会造成暴毙; # 我们但如果非比不可呢?比如这个东西: class User: def __init__(self,user_id): self.user_id = user_id def __repr__(self): return "User({})".format(self.user_id) # 这里有一个列表user user = [User(23), User(3), User(99)] # 如果这时候需要按照某个属性给这个列表排序,那么直接sorted会报错: try: sorted(user) pass except: print("你看吧,报错了") # 这里的原因是对象不能直接进行比较,所以想要排序只能按照对象里的某个属性 # 有两种解决方案: sorted_list = sorted(user, key=lambda x: x.user_id) print(sorted_list) # 要么就用operator库里的attrgetter from operator import attrgetter sorted_list = sorted(user, key=attrgetter("user_id")) print(sorted_list) # 用这东西的好处和针对字典的itemgetter一样,可以取多个字段 # sorted_list = sorted(user, key=attrgetter("user_id", "word_2", "word_3", ...)) # 同样的,max和min这种有key参数的内建函数都能用这些东西折腾