当列表的值为 10 时,基于列表第 2 个值的 Python 嵌套列表排序无法正常工作

python nested list sort based on 2nd value of the list is not working properly when it has value 10

提问人:Arjon Nill 提问时间:12/2/2022 最后编辑:azroArjon Nill 更新时间:12/2/2022 访问量:70

问:

这是我在 Python 中解决 hackerrank 嵌套列表问题的代码 问题链接:https://www.hackerrank.com/challenges/nested-list/problem?isFullScreen=true

法典:

def sort(sub_li):
    return(sorted(sub_li, key = lambda x: x[1]))
    
if __name__ == '__main__':
    x=int(input ())
    stu=[]
    record=[]
    for i in range(0,x):   
        stu.append(input())
        stu.append(input())
        record.append(stu)
        stu = []
    
    namelist = []
     
    sortedrecord = sort(record)
    print(sortedrecord)
    value = 0
    for i,j in sortedrecord:
        if j>sortedrecord[0][1]:
            
            value = j
            break
    
    for i,j in sortedrecord:
        if j==value:
            namelist.append(i)  
    
    namelist.sort()
    
    for i in namelist:
        print(i)       

问题是排序功能在得分为 10 时无法正确排序

示例输入:

4
Shadab
8
Varun
8.9
Sarvesh
9.5
Harsh
10

输出:

[['Harsh', '10'], ['Shadab', '8'], ['Varun', '8.9'], ['Sarvesh', '9.5']]
Shadab

注意:我尝试了其他分类方式,但条件保持不变。

Python 排序嵌 套列表 辅助索引

评论


答:

0赞 azro 12/2/2022 #1

在词典编纂顺序中,come befor ,因为在之前10818

您需要转换为才能使其按预期工作float

  1. 在输入端

     stu.append(input())
     stu.append(float(input()))
    
  2. 或使用时

    def sort(sub_li):
        return sorted(sub_li, key=lambda x: float(x[1]))