我有一个奇怪的列表,以下列方式构建:
[[name_d, 5], [name_e, 10], [name_a, 5]]
Run Code Online (Sandbox Code Playgroud)
我想先用数字(desc)对它进行排序,然后,如果数字相同,则按名称(asc)排序.所以我想要的结果是:
[[name_e, 10], [name_a, 5], [name_d, 5]]
Run Code Online (Sandbox Code Playgroud)
我试着想一个我可以在sort方法中使用的lambda函数,但我不确定我能做到.
tba*_*ack 25
python中的排序函数允许将函数作为排序键传递:
l = [[name_d, 5], [name_e, 10], [name_a, 5]]
# copy
l_sorted = sorted(l, key=lambda x: (x[1] * -1, x[0]))
# in place
l.sort(key=lambda x: (x[1] * -1, x[0]))
Run Code Online (Sandbox Code Playgroud)
编辑:
1.排序顺序
2.演示复制和就地排序