You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中像排序整数一样对类对象列表进行排序

按类对象的score属性排序列表的方法

方法一:用key参数快速排序(不用改类)

这是最灵活的方式,不需要修改类的代码,直接在排序时指定用score作为排序依据:

class MyClass:
    def __init__(self, score):
        self.score = score

# 创建示例对象
x = MyClass(2)
y = MyClass(3)
z = MyClass(1)
obj_list = [x, y, z]

# 按score升序排序(直接修改原列表)
obj_list.sort(key=lambda item: item.score)

# 要是不想改原列表,用sorted()生成新列表
# sorted_list = sorted(obj_list, key=lambda item: item.score)

# 查看结果
for obj in obj_list:
    print(obj.score)  # 输出 1、2、3,对应z、x、y的顺序

方法二:给类加比较方法,支持直接sort()

如果你希望像排序整数那样直接调用list.sort(),可以给类定义__lt__方法,告诉Python怎么比较两个对象:

class MyClass:
    def __init__(self, score):
        self.score = score
    
    # 定义“小于”的规则:按score比较
    def __lt__(self, other):
        return self.score < other.score

# 创建示例对象
x = MyClass(2)
y = MyClass(3)
z = MyClass(1)
obj_list = [x, y, z]

# 直接调用sort(),自动按score升序排
obj_list.sort()

# 查看结果
for obj in obj_list:
    print(obj.score)  # 输出 1、2、3,对应z、x、y的顺序

降序排序的调整

要是需要按score从高到低排,两种方法都能改:

  • 方法一:加reverse=True参数,或者把key改成lambda item: -item.score
    obj_list.sort(key=lambda item: item.score, reverse=True)
    
  • 方法二:要么修改__lt__里的判断为self.score > other.score,要么调用sort()时加reverse=True

内容的提问来源于stack exchange,提问作者someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:15:03