我根据其中一个属性对一些对象进行排序,使用类似的东西:
sorted_list = sorted(unsorted_list, key=lambda x: x.my_attr)
有没有办法对这些对象的列表进行排序,就像Python可以对整数列表列表进行排序一样?我可以为这些对象重载__cmp__(self, other)
,但这会在外部包中引发困难。嵌套也可能变得任意深,所以我不认为我可以使用列表理解。
我想知道是否有什么地方可以生成my_attr
的列表并将其链接到相应的对象列表。我无法想出一个好的方法来做到这一点。
答案 0 :(得分:0)
您可以在数据类型上实现比较函数,然后依赖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
,同样适用于__lt__
。