我的问题是关于Python中的二维列表排序,不允许使用第三方工具包。
假设有一个二维列表Students
,其中存储了一些学生的信息,第一列是id
,第二列是name
,第三列是age
。您需要按照age
作为第一关键字以降序排序,而按照name
作为第二关键字以升序排序,也就是说,如果studentA
和studentB
年龄相同,则按照name
以升序排序。
参考代码如下:
students = [[3 , 'Jack' , 12] , [2 , 'Rose' , 13] , [1 , 'Tom' , 10] , [5 , 'Sam' , 12] , [4 , 'Joy' , 8]]
print(f"according to age as first keyword,name as second keyword in reverse order:\
{sorted(students , key=(lambda x: [x[2] , x[1]]) , reverse=True)}")
输出结果为
[[2, 'Rose', 13], [5, 'Sam', 12], [3, 'Jack', 12], [1, 'Tom', 10], [4, 'Joy', 8]]
但期望的结果是
[[2, 'Rose', 13], [3, 'Jack', 12], [5, 'Sam', 12], [1, 'Tom', 10], [4, 'Joy', 8]]
我们要如何修改代码才能得到正确的结果? 非常感谢。
students = [[5, 'Sam', 12], [3, 'Jack', 12], [2, 'Rose', 13], [1, 'Tom', 10], [4, 'Joy', 8]]
,它就无法产生预期的答案。 - nicolas chan