python - 在 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
请帮我解决这个问题。
解决方案
a,b=input().split() 上面这行返回两个“字符串”而不是“整数”。因此,正在使用基于文本的比较。(文本比较中 11 小于 8)
在将 a 和 b 传递给 points 类之前将其转换为整数,或在 points 类的init内将其转换为 int 。
推荐阅读
- google-cloud-platform - 为什么 jupyter notebook 中的单元格在已经生成输出时显示正在执行?
- mysql - 如何在 Laravel Query Builder 上省略日期子查询的结果
- azure - 数据库重新配置失败
- scala - Play 2.5 使用的 Akka Streams 版本是什么?
- audio - 用ffmpeg中的部分mp3替换mp4文件的音频
- javascript - 我收到此错误 => TypeError: Cannot read property 'image' of undefined
- javascript - 当 style.display 进入“block”时如何自动显示 url?
- django - 安全地将复杂值序列化为 HTML 元素属性
- python - 生成相同难度的 3x3 谜题?
- javascript - 在 GET 请求中使用正文