我有一個像這樣的二維列表:[
[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]]
添加回答
舉報
0/150
提交
取消
