我有一份清单
lists=[["John",8,7,9],["Sarah",5,3,8],["David",4,3,9],["Alice",5,4,7]]
我希望按其最小元素排序,但如果该元素相同,我想通过 second 最小元素执行二次排序。到目前为止,我按照第一个标准排序:
lists.sort(key=lambda x: min(x))
当我致电lists
时,返回
[["Sarah",5,3,8],["David",4,3,9],["Alice",5,4,7],["John",8,7,9]]
现在我想将["David",4,3,9]
放在["Sarah",5,3,8]
之前,但我不知道如何引用第二个最小元素。提前谢谢!
答案 0 :(得分:1)
在 lambda表达式中使用sorted
代替min
:
>>> lists=[["John",8,7,9],["Sarah",5,3,8],["David",4,3,9],["Alice",5,4,7]]
# sort based on numeric values v
>>> lists.sort(key=lambda x: sorted(x[1:]))
>>> lists
[['David', 4, 3, 9], ['Sarah', 5, 3, 8], ['Alice', 5, 4, 7], ['John', 8, 7, 9]]
它将按照递增顺序的值顺序对列表进行排序。