列表中的已排序子列表

时间:2017-03-27 05:13:11

标签: python list sorting

假设我有

a=[[0,1],[2,1],[0,2],[1,3]] 

我希望得到像这样的结果

b=[[0,1],[0,2],[1,2],[1,3]] 

棘手的部分是将[2,1]排序为[1,2]并再次对整个列表进行排序。我试过了

sorted(a, key=lambda x: (x[0]))

但它给了我[[0,1],[0,2],[1,3],[2,1]]

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

首先尝试对子列表进行排序:

print sorted([sorted(i) for i in a])

更新可以稍微好一些,将列表理解传递给sorted()会产生正在制作的列表的副本,因此您只需将其删除即可:

print sorted(sorted(i) for i in a)

结果

[[0, 1], [0, 2], [1, 2], [1, 3]]

正如@ PM2Ring所说,使用lambda可能会返回错误的结果,应该将其删除。

答案 1 :(得分:2)

您可以使用理解来尝试以下内容。

>>> b=sorted([sorted(s) for s in a])
>>> b
[[0, 1], [0, 2], [1, 2], [1, 3]]

它应该有用。

答案 2 :(得分:1)

试试这个:

b=sorted([sorted(small_list) for small_list in a ])

答案 3 :(得分:0)

试试这个:

>>> [sorted(i) for i in sorted(a, key=lambda x: (min(x), sum(x)))]
[[0, 1], [0, 2], [1, 2], [1, 3]]