在Python中对对象列表排序失败

在Python中对对象列表排序失败,python,class,sorting,object,Python,Class,Sorting,Object,我已经创建了名为points的类。它有两个“开始”和“结束”(它基本上代表一个二维坐标)。在驱动程序中,我列出了一个对象列表,我接受了几个值,我想根据“结束”属性对对象列表进行排序 代码如下:- class points: def __init__(self,a,b): self.begin=a self.end=b t=int(input()) while t: t-=1 l=[] index=[] n=int(inpu

我已经创建了名为points的类。它有两个“开始”和“结束”(它基本上代表一个二维坐标)。在驱动程序中,我列出了一个对象列表,我接受了几个值,我想根据“结束”属性对对象列表进行排序

代码如下:-

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

5 8
6 11
9 12
6 11
9 12
5 8
请帮我解决这个问题。

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


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

l.append(points(int(a),int(b))
您当前正在按词法排序,因为
a
b
输入是字符串而不是整数