Пользовательская функция Python для сортировки списка объектов - PullRequest
0 голосов
/ 18 мая 2019

Дан список объектов класса Point. Класс Point выглядит следующим образом:

class Point:
    def __init__(self, value, segment, is_start=False):
        self.value = value
        self.is_start = is_start

Цель состоит в том, чтобы отсортировать список по атрибуту value при условии, что, если два объекта имеют одинаковые атрибуты value, объект, значение которого is_start равно True, должен идти перед объектом, значение is_start которого равно False .

Пример ввода:

[Point(3, False), Point(3, True), Point(1, True),]

Я пытался использовать array.sort(key=lambda x: x.value) и вывод был:

[Point(1, True), Point(3, False), Point(3, True),]

Но оно не удовлетворяет условию, указанному ранее (Point(3, True) должно быть до Point(3, False)).

Пример желаемого вывода:

[Point(1, True), Point(3, True), Point(3, False),]

Какую функцию использовать для удовлетворения заявленного условия?

1 Ответ

1 голос
/ 18 мая 2019

Попробуйте это.

sorted(x, key=lambda x: (x.value, not x.is_start))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...