如何用第一個值對列表進行排序,如果兩者相等,請檢查第二個值,依此類推

如果給你一個列表(異構)。如何根據第一個值對其進行排序,如果第一個值相等,則使用這些項的第二個值進行排序,即使第二個數值相等,也使用第三個值排序,依此類推。

我知道如何使用內部列表的特定索引進行排序

讓列表為:

a = [[2,2,1],[2,2,3],[2,1,4],[2,2,5],[1,2,6],[2,2,2]]  

I want:

a=[[1,2,3],[2,1,1],[2,2,2],[2,2,3],[2,2,4],[2,2,5]]

using,

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

將使用第一個值對其排序,但如果第一個值相等,則將根據最先出現的值添加值。

我該怎么辦?如果第一個值相等,我想使用內部列表中的最后一個值進行排序,我該怎么做?我的意思是我想要的輸出是:

a=[[1,2,6],[2,2,1],[2,2,2],[2,2,3],[2,1,4],[2,2,5]]  

如何做到這一點?

? 最佳回答:

您可以創建一個定義比較順序的元組。

>>> a=[[2,2,1],[2,2,3],[2,1,4],[2,2,5],[1,2,6],[2,2,2]]
>>> sorted(a,key=lambda x: (x[0],x[2],x[1]))
[[1, 2, 6], [2, 2, 1], [2, 2, 2], [2, 2, 3], [2, 1, 4], [2, 2, 5]]

也可以使用元組理解來完成。例如,僅按偶數索引排序:

>>> a=[[2,2,1],[2,2,3],[2,1,4],[2,2,5],[1,2,6],[2,2,2]]
>>> sorted(a,key=lambda x: tuple(x[i] for i in range(len(x)) if i%2==0))
[[1, 2, 6], [2, 2, 1], [2, 2, 2], [2, 2, 3], [2, 1, 4], [2, 2, 5]]

上面的排序示例與以下相同:

>>> a=[[2,2,1],[2,2,3],[2,1,4],[2,2,5],[1,2,6],[2,2,2]]
>>> sorted(a,key=lambda x: (x[0],x[2]))
[[1, 2, 6], [2, 2, 1], [2, 2, 2], [2, 2, 3], [2, 1, 4], [2, 2, 5]]
主站蜘蛛池模板: 日本高清无卡码一区二区久久| 亚洲国产一区二区三区| 国产精品熟女视频一区二区| 一区二区三区内射美女毛片| 日本一区二三区好的精华液 | 视频一区精品自拍| 无码日韩人妻AV一区免费l| 99久久综合狠狠综合久久一区| 久久影院亚洲一区| 夜夜嗨AV一区二区三区| 天堂资源中文最新版在线一区 | 国产成人久久一区二区不卡三区| 亚洲午夜一区二区三区| 亚洲国产日韩一区高清在线 | 99精品国产高清一区二区三区| 日本免费一区二区三区最新vr| 伊人久久一区二区三区无码| 波多野结衣一区二区免费视频| 日韩少妇无码一区二区三区| 爱爱帝国亚洲一区二区三区| 国产精品视频一区二区三区不卡 | 精品一区二区三区在线成人| 国产婷婷色一区二区三区| 久久精品无码一区二区三区日韩 | 国精产品一区二区三区糖心 | 中文字幕一区二区人妻| 精品一区二区无码AV| 国产精久久一区二区三区| 久久久久国产一区二区三区| A国产一区二区免费入口| 亚洲国产一区二区三区| 91精品一区国产高清在线| 国产视频一区二区在线播放| 中文字幕人妻第一区| 国产乱码精品一区二区三区麻豆| 色婷婷亚洲一区二区三区| 无码一区二区三区在线| 无码精品人妻一区| 国产成人精品一区二区三区无码| 亚洲一区二区三区日本久久九| 亚洲美女视频一区二区三区|