使用自定义键

时间:2015-07-31 16:47:03

标签: python list sorting

我根据其中一个属性对一些对象进行排序,使用类似的东西:

sorted_list = sorted(unsorted_list, key=lambda x: x.my_attr)

有没有办法对这些对象的列表进行排序,就像Python可以对整数列表列表进行排序一样?我可以为这些对象重载__cmp__(self, other),但这会在外部包中引发困难。嵌套也可能变得任意深,所以我不认为我可以使用列表理解。

我想知道是否有什么地方可以生成my_attr的列表并将其链接到相应的对象列表。我无法想出一个好的方法来做到这一点。

1 个答案:

答案 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__