如何排序在Python嵌套表的外部和内部的子表?(How to sort the outer and

2019-06-25 19:54发布

首先,道歉,如果这太幼稚了(我是初学者)。 我有以下类型的列表,我想先通过升序内部列表的最后一个成员排序列表:

data =  [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2] ]

我完成此使用: sorted(data,key=operator.itemgetter(2),reverse = True) ,这使我:

[[1, .45, 0], [3, .98, 0],[4, .82, 1], [5, .77, 1], [2, .49, 2], [6, .98, 2]]

现在,我想排序中的子列表,即第一排序列表中使用中间层构件为重点的最后一个成员为“0”,按降序排列。 然后子列表“1”排序为最后一个成员等。 注意在每个子列表中的元素,这个数字是不同的,不知道。 最终的名单应该是这样的:

[[3, .98, 0],[1, .45, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2],[2, .49, 2] ]

名单其实是相当巨大的,因此,我在寻找一个有效的实施。 任何指导将不胜感激 !

Answer 1:

>>> data =  [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2] ]
>>> sorted(data, key=lambda x:(x[2], -x[1]))
[[3, 0.98, 0], [1, 0.45, 0], [4, 0.82, 1], [5, 0.77, 1], [6, 0.98, 2], [2, 0.49, 2]]

您可以根据需要添加额外的条款拉姆达



Answer 2:

您可以通过排序多个键:

data =  [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2] ]
sorted(data, key=lambda x: (x[2], -x[1]))

[[3, 0.98, 0],
 [1, 0.45, 0],
 [4, 0.82, 1],
 [5, 0.77, 1],
 [6, 0.98, 2],
 [2, 0.49, 2]]


文章来源: How to sort the outer and inner sublist of a nested list in Python?