Kyl*_*S-C 5 python sorting list
我根据它们的一个属性对一些对象进行排序,使用类似这样的东西:
sorted_list = sorted(unsorted_list, key=lambda x: x.my_attr)
Run Code Online (Sandbox Code Playgroud)
有没有办法对这些对象的列表列表进行排序,就像Python可以对整数列表列表进行排序一样?我可以__cmp__(self, other)为这些对象重载,但这会在外部包中引发困难.嵌套也可能变得任意深,所以我认为我不能只使用列表理解.
我想知道是否有什么东西我可以生成my_attrs的列表并将其链接到相应的对象列表.我想不出一个好的方法来做到这一点.
您可以对数据类型实现比较函数,然后依赖 Python 的排序函数。
查看类似的问题和答案:Python: Sort custom class without use of `key` argument?
简而言之,您可以使用total_ordering元类、实现__eq__和__lt__函数。
根据您的具体情况,您可以__eq__这样实现:
def __eq__(self, other):
return self.my_attr == other.my_attr
Run Code Online (Sandbox Code Playgroud)
类似地对于__lt__.