Python自定义函数,用于对对象列表进行排序

时间:2019-05-18 16:37:56

标签: python sorting

给出了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 个答案:

答案 0 :(得分:1)

尝试一下。

sorted(x, key=lambda x: (x.value, not x.is_start))