首页 > 解决方案 > 在 Python 中对对象列表进行排序失败

问题描述

我创建了名为 points 的类。其中有 2 个“开始”和“结束”(它基本上代表一个 2D 坐标)。在驱动程序中,我制作了一个对象列表,我接受的值很少,我想根据对象对列表进行排序到“结束”属性。

这是代码: -

class points:
    def __init__(self,a,b):
        self.begin=a
        self.end=b

t=int(input())
while t:
    t-=1
    l=[]
    index=[]
    n=int(input())

    for i in range(n):
        a,b=input().split()
        l.append(points(a,b))

    l=sorted(l, key=lambda obj: obj.end)


    for i in range(n):
        print(l[i].begin,l[i].end)

对于输入:

1
3
5 8
9 12
6 11

这应该是答案:

5 8
6 11
9 12

但它给出了答案:

6 11
9 12
5 8

请帮我解决这个问题。

标签: pythonclasssortingobject

解决方案


a,b=input().split() 上面这行返回两个“字符串”而不是“整数”。因此,正在使用基于文本的比较。(文本比较中 11 小于 8)

在将 a 和 b 传递给 points 类之前将其转换为整数,或在 points 类的init内将其转换为 int 。


推荐阅读