按第二个最小元素对列表排序

时间:2016-12-22 11:47:50

标签: python sorting element

我有一份清单

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]之前,但我不知道如何引用第二个最小元素。提前谢谢!

1 个答案:

答案 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]]

它将按照递增顺序的值顺序对列表进行排序。