假设我有
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]]
有什么建议吗?
答案 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]]