按对象字段排序对象列表是一个numpy数组?

时间:2016-11-01 13:24:58

标签: python python-3.x numpy

我有一个类,它有一个numpy数组的字段。此类的实例位于列表中。我想通过上面提到的数组对列表进行排序。我怎么能这样做?

简化为:

class DataObject:
  def __init__(self, location):
    self.loc = location

do1 = DataObject(array([4.0, 5.0, 6.0]))
do2 = DataObject(array([1.0, 2.0, 3.0]))
do3 = DataObject(array([1.0, 8.0, 9.0]))
dos = [do1, do2, do3]

sorted_dos = awesome_sort(dos)

我希望sorted_dos中的订单为do2,do3,do1。

如何在不更改awesome_sort()的情况下实现DataObject优雅且无错误?

1 个答案:

答案 0 :(得分:1)

尝试使用内置的sorted功能。您可以传递key,告诉它如何对列表进行排序。

sorted(dos, key=lambda x: tuple(x.loc))

这将根据数组的第一个值进行升序排序。如果第一个元素相等,它将检查第二个元素。