按照Python中最大项目的顺序对一组列表进行排序

ask*_*ine 1 python algorithm

有人知道如何解决这个问题吗?我有这个

[[1, 2, 3], [5, 4, 3], [2, 0, 1], [2, 3, 4, 1]]
Run Code Online (Sandbox Code Playgroud)

它应该返回这个

5 4 3
2 3 4 1
1 2 3
2 0 1
Run Code Online (Sandbox Code Playgroud)

我正在尝试这段代码

output = sorted(map(lambda a: a, list), reverse=True)
for i in output:                                       
   print(' '.join(str(e) for e in i))
                                                               
Run Code Online (Sandbox Code Playgroud)

但它没有返回好的代码

5 4 3
2 3 4 1
2 0 1
1 2 3
Run Code Online (Sandbox Code Playgroud)

Mar*_*rat 7

使用keyarg 设置比较标准:

sorted(a, key=max, reverse=True)
Run Code Online (Sandbox Code Playgroud)

解释:key接受一个函数。元素将在比较之前传递给此函数。返回最大元素的函数恰好是内置函数,因此我们不需要定义它。

另外,值得一提的是为什么第一个结果,因为列表比较语义有时很有用。Python 逐个元素地比较列表,有点像字符串。那么决定因素是第一个元素(如果它们相等)-比较第二个元素,依此类推。

这就是为什么以 5 开头的列表排在前面,而以 2 开头的两个列表则按其第二个元素排序,等等。