在Python 3.6中,如何按每个列表的第一个和第三个元素对列表列表进行排序?

时间:2017-12-08 20:26:00

标签: python list sorting

例如,如果我有这样的列表:

[[2, 4, 14, 5], [10, 15, 21, 74], [2, 54, 7, 22], [51, 23, 65, 43]]

我希望我的程序按列表中的第一个元素对其进行排序,如果任何第一个元素相等,则按列表中的第三个元素对这些相等的元素进行排序。

在上面的例子中,我希望得到这个:

[[**2**, 54, **7**, 22], [**2**, 4, **14**, 5], [**10**, 15, 21, 74], [**51**, 23, 65, 43]]

1 个答案:

答案 0 :(得分:1)

您可以使用key并传递一个lambda函数,返回第一个和第三个元素的元组。

s = [[2, 4, 14, 5], [10, 15, 21, 74], [2, 54, 7, 22], [51, 23, 65, 43]] 
new_s = sorted(s, key=lambda x:(x[0], x[2]))

输出:

[[2, 54, 7, 22], [2, 4, 14, 5], [10, 15, 21, 74], [51, 23, 65, 43]]