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

如何不使用Lambda重写基于对象symbol属性的sorted排序代码

不用Lambda实现对象列表按属性排序

推荐方案:使用operator.attrgetter

这是替代lambda获取对象属性排序最常用、最简洁的方式,无需额外定义方法:

  1. 导入operator模块:
import operator
  1. 修改排序代码(注意替换为你实际的属性名:你提到属性是sym,但原lambda用的是symbol,请对应调整):
# 如果对象属性是sym
self.list = sorted(self.list, key=operator.attrgetter('sym'))

# 如果对象属性是symbol(和原lambda逻辑一致)
self.list = sorted(self.list, key=operator.attrgetter('symbol'))

备选方案:使用类中的get_sym方法

如果你坚持要用类内的get_sym方法,需确保方法定义正确,且传递方式无误:

假设你的类定义如下(包含返回属性的实例方法):

class YourClass:
    def __init__(self, sym, x, y):
        self.sym = sym
        self.x = x
        self.y = y
    
    def get_sym(self):
        return self.sym

排序时直接传递类的方法对象即可(未绑定的实例方法会自动接收每个对象作为参数):

self.list = sorted(self.list, key=YourClass.get_sym)

注意:如果get_sym是静态方法(用@staticmethod装饰),直接传递YourClass.get_sym同样有效,但实例方法的方式更符合类的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:52:14