我有一个类,它有一个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
优雅且无错误?
答案 0 :(得分:1)
尝试使用内置的sorted
功能。您可以传递key
,告诉它如何对列表进行排序。
sorted(dos, key=lambda x: tuple(x.loc))
这将根据数组的第一个值进行升序排序。如果第一个元素相等,它将检查第二个元素。