對資料進行排序是許多程式設計任務的基本面向。在處理複雜的資料結構時,通常需要根據多個屬性進行排序。本文解決了基於多個條件對列表列表進行排序的問題。
提供的程式碼片段顯示了一個列表列表,其中每個內部列表代表一個具有各種屬性的物件。目標是按兩個屬性對此清單進行排序:「高」或「矮」屬性以及顏色屬性。
Itemgetter 是一個有用的函數為元組中的多個屬性建立索引。它採用多個索引作為參數,並傳回一個從給定元組中提取這些屬性的函數。使用itemgetter,您可以建立一個同時考慮「高/矮」和顏色屬性進行排序的鍵函數:
import operator s = sorted(s, key = operator.itemgetter(1, 2))
另一種方法指定排序的一個關鍵函數是使用lambda函數。 Lambda 函數是可以內聯定義的匿名函數。以下 lambda 函數傳回「高/矮」和顏色屬性的元組:
s = sorted(s, key = lambda x: (x[1], x[2]))
使用其中任一方法,您可以根據多個條件對清單進行排序。結果將是根據指定屬性排序的清單的清單。
在給定的程式碼片段中,sorted 用於傳回新的排序清單。但是,您也可以使用 sort 方法直接對清單本身進行排序。這將就地修改原始清單:
s.sort(key = operator.itemgetter(1, 2))
透過利用 itemgetter 或 lambda 函數,您可以定義關鍵函數以按多個屬性對清單進行排序。這種技術在處理複雜的資料結構時特別有用,可以簡化排序過程。
以上是如何在Python中按多個屬性對清單進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!