亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用條件對python中的二維列表進行排序

使用條件對python中的二維列表進行排序

婷婷同學_ 2022-11-01 15:10:47
我有一個像這樣的二維列表:[     [abc, 5],     [abd, 21],     [abb, 10],     [abc, 3],     [abb, 15],     [abd, 20]     ]首先:我需要按字典順序對列表進行排序(這很簡單)第二:如果第一列有多個相同的元素,則按照第二列(降序)對列表(只有相同的元素)進行排序。所以,我想要這樣的結果:[     [abb, 15],     [abb, 10],     [abc, 5],     [abc, 3],     [abd, 21],     [abd, 20]     ]
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

Python 的排序函數是穩定的,這意味著如果兩個元素比較相等,它們的相對位置不會改變。元素只有在比較不相等時才會切換位置。


此外,排序需要一個可選key參數,該參數是一個確定排序應該比較哪些值的函數。您可以為此定義一個完整的函數,但如果您只打算使用一次,則通常定義一個簡短的 lambda 函數。


將它們放在一起,您可以先按列表的第二個元素對列表進行排序,然后再按第一個元素對它們進行第二次排序。第一次排序的相對位置將在第二次排序之后保持。


a = [

    ['abc', 5],

    ['abd', 21],

    ['abb', 10],

    ['abc', 3],

    ['abb', 15],

    ['abd', 20]

]


# Sort by second element first, in descending order

a = sorted(a, key=lambda x: x[1], reverse=True)  


# Then sort by first element, in ascending order

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


print(a)  # [['abb', 15], ['abb', 10], ['abc', 5], ['abc', 3], ['abd', 21], ['abd', 20]]



查看完整回答
反對 回復 2022-11-01
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

查看完整回答
反對 回復 2022-11-01
  • 2 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號