2015-05-29 73 views
2

嵌套列表,排序由特定的逻辑嵌套列表 - Python的

A = [[2, 0], [1, 0], [4, 3], [3, 2], [5, 1]] 

我想它基于升序排序1st元素进行排序,即

result_A = [[2, 0], [1, 0], [5, 1], [3, 2], [4, 3]] 

1st元素常见于任何嵌套列表中,我试图根据0th元素对其进行排序。所以,

required_A = [[1, 0], [2, 0], [5, 1], [3, 2], [4, 3]] 

这是我到目前为止的代码:

required_A = sorted(A, key=itemgetter(1)) 

我能够基于1st元素进行排序,但我无能如何在不其余的0th元素上再次对其进行排序订单越来越混乱。谢谢!

+0

或只是'排序(A,键=拉姆达X:X [:: - 1])' – vaultah

回答

1

这显示了如何修复您的itemgetter代码。

>>> from operator import itemgetter 
>>> sorted(A, key=itemgetter(1, 0)) 
[[1, 0], [2, 0], [5, 1], [3, 2], [4, 3]] 

当多个参数传递到itemgetter,它返回一个可用于构造从一个给定的序列的元组与来自被到itemgetter提供作为自变量的各索引值的函数。

元组与所有序列一样,可以在Python中与lexicographically进行比较。这意味着他们将从左到右,按指数进行比较,直到一个序列超过另一个序列。这也意味着元组为你的排序提供了很好的密钥。

1

假设我们有个别子列表中的项目是相反的顺序,我们可以直接对整个列表进行排序。因此,让我们通知我们要考虑逆转子表的sorted功能:

sorted(A, key=lambda x: list(reversed(x)) 
+0

你真的应该解释如何你的答案作品:-) – kguest

+1

加了一点解释。 – dlask