所以我有这个列表和子列表:
[[39, 4, 43], [23, 3, 26], [46, 5, 51], [66, 15, 51], [66, 7, 73], [10, 2, 12], [79, 8, 87]]
Run Code Online (Sandbox Code Playgroud)
我需要按每个子列表中第三个元素的顺序对列表进行排序。但是在这种情况下,如果其中两个或多个相等,则:
[46, 5, 51], [66, 15, 51]
Run Code Online (Sandbox Code Playgroud)
排序时,算法应将具有最大第一元素的子列表放在第一位,因此所需的输出应像这样。
[[79, 8, 87],[66, 7, 73],[66, 15, 51],[46, 5, 51],[39, 4, 43],[23, 3, 26],[10, 2, 12]]
Run Code Online (Sandbox Code Playgroud)
有什么建议可以解决吗?谢谢或您的时间和帮助
您可以将排序顺序设置为元组,如下所示:
l = [[39, 4, 43], [23, 3, 26], [46, 5, 51], [66, 15, 51], [66, 7, 73], [10, 2, 12], [79, 8, 87]]
sorted(l, key = lambda x: (x[2],x[0]), reverse=True)
Run Code Online (Sandbox Code Playgroud)
结果:
[[79,8,87],[66,7,73],[66,15,51],[46,5,51],[39,4,43],[23,3,26],[ 10、2、12]]