按特定逻辑对嵌套列表进行排序 - Python

时间:2015-05-29 07:23:30

标签: python sorting python-3.x nested-lists

嵌套列表,

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元素对其进行排序,但是如果在SELECT 1, * FROM QuotesTable WHERE quotesid = 103 UNION ALL SELECT 2, * FROM QuotesTable WHERE quotesid = 7 UNION ALL SELECT 3, * FROM QuotesTable WHERE quotesid = 16 UNION ALL SELECT 4, * FROM QuotesTable WHERE quotesid = 50 UNION ALL SELECT 5, * FROM QuotesTable WHERE quotesid = 41 UNION ALL SELECT 6, * FROM QuotesTable WHERE quotesid = 80 UNION ALL SELECT 7, * FROM QuotesTable WHERE quotesid = 67 UNION ALL SELECT 8, * FROM QuotesTable WHERE quotesid = 64 ORDER BY 1 元素上再次对其进行排序而没有剩余的顺序搞砸了,我很无能为力。谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

当您将多个参数传递给itemgetter时,它会返回一个函数,该函数可用于构造来自给定序列的元组,其中包含作为itemgetter的参数提供的相应索引的值。 / p>

与所有序列一样,元组可以在Python中进行比较lexicographically。这意味着它们将从左到右,逐个索引进行比较,直到一个序列超过另一个序列。这也意味着元组可以为您的排序提供出色的密钥。

答案 1 :(得分:1)

如果我们在相反的顺序中有各个子列表中的项目,我们可以直接对整个列表进行排序。因此,让我们通知sorted函数我们要考虑反向子列表:

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