Stephane123wer Ответов: 1

Сортировка массива объектов по атрибутам


У меня есть класс, как определено ниже:
class Node():
    
  def _init_(self, xcoordinate= None, ycoordinate= None, h=None, g=None, cost=None):
        self.xcoordinate = xcoordinate
        self.ycoordinate = ycoordinate
        self.h = h
        self.g = g
        self.cost = h + g
        
    def _repr_(self):
        return repr((self.xcoordinate, self.ycoordinate, self.h, self.g, self.cost))

Затем у меня есть массив объектов Node. Как мне отсортировать этот массив на основе Node.cost?(атрибут стоимости объектов).

Что я уже пробовал:

Я попробовал использовать строку ниже
sorted(possible_next_steps, key=lambda node: node[4])


но это приводит к ошибке "IndexError: индекс кортежа вне диапазона". Я был бы очень признателен вам за помощь, спасибо.

1 Ответов

Рейтинг:
2

Peter Leow

Сначала исправьте эти синтаксические ошибки в своем коде, а затем попробуйте сделать следующее:

newlist = sorted(oldlist, key=lambda x: x.cost)
Сортировка HOW TO — документация по Python 3.7.0[^]


Stephane123wer

@Permalink когда я запускаю ваш код, я получаю ошибку

"AttributeError: объект 'tuple' не имеет атрибута 'cost'"

Peter Leow

Как вы создали экземпляр объекта класса? Покажу тебе код.

Peter Leow

Вы спрашиваете о сортировке, но показываете какой-то нерелевантный код. Проверьте эту демонстрацию и разберитесь сами http://rextester.com/YZNFBY8224