在Python 中對具有多個鍵的列表進行排序:逆序排列
當組織具有多個條件的列表時,Python的內建排序() 函數提供了一個多功能工具。但是,它可能並不總是滿足反轉特定鍵的排序順序的要求。
理解問題
考慮一個場景,其中我們有一個元組列表包含兩個元素:
myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]
我們可能想要使用兩個鍵對此列表進行排序:一個不區分大小寫(y[0].lower()),另一個按相反順序(y[1] )。使用以下程式碼實作前者:
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))
但是,要反轉排序順序,我們可以加入reverse = True參數:
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)
不幸的是,這會反轉排序兩個鍵的順序。
解決問題
為了滿足此要求,我們可以利用 Python 中 lambda 函數的強大功能。透過在排序關鍵字之一之前引入負號 (-),我們可以有效地反轉該特定關鍵字的排序順序。例如:
sortedList = sorted(myList, key = lambda y: (y[0].lower(), -y[1]))
在此程式碼中,-y[1] 反轉第二個鍵(y[1]) 的排序順序,而第一個鍵(y[0].lower( ) ) 保持升序排列,不區分大小寫。
其他範例
以下是更多具有不同排序順序組合的範例:
# Reverse both keys sortedList = sorted(myList, key = lambda y: (-y[0].lower(), -y[1])) # Reverse only the first key sortedList = sorted(myList, key = lambda y: (-y[0].lower(), y[1]))
以上是如何在 Python 的 `sorted()` 函數中反轉特定鍵的排序順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!