例如,我們有一個串列串列。該串列應根據某個索引 i 進行反向排序,如果存在平局,則應根據條件按升序或降序對其進行排序。
例如:
名單是[['A', 2, 4.2], ['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5]]
如何對此進行排序以使結果為:
[['B', 4, 4.5], ['A', 2, 4.2], ['D', 2, 3.5], ['C', 2, 3.3]][['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5], ['A', 2, 4.2]]
在第一個條件下,我希望它們按降序排序index 1,然后再次按降序排序,index 2如果有 tie on index 1。
在第二種情況下,我希望它們根據 降序排序index 1,然后index 2如果有 tie on則按升序排序index 1。
uj5u.com熱心網友回復:
我能想到的是以下內容:
myList = [['A', 2, 4.2], ['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5]]
print(sorted(myList, key= lambda x: (x[1], x[2]), reverse=True))
print(sorted(myList, key= lambda x: (x[1], -1*x[2]), reverse=True))
輸出
[['B', 4, 4.5], ['A', 2, 4.2], ['D', 2, 3.5], ['C', 2, 3.3]]
[['B', 4, 4.5], ['C', 2, 3.3], ['D', 2, 3.5], ['A', 2, 4.2]]
解釋
sortedfunction 有兩個引數:一個 iterable,它可以是一個 list、set 或任何可迭代的東西,以及一個 key,它定義了排序模式。在 key 引數中,我定義了一個(x[1], x[2])表示排序順序的元組(索引號為 2 的元素,它檢查其負值以按升序對它們進行排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443133.html
上一篇:檢查是否存在外部url。反應
下一篇:字串中的特定字符數
