清單中的多屬性排序
使用Python的sorted()函數和key參數,依單一屬性對清單進行排序非常簡單。然而,按多個屬性排序是一個挑戰。
問題表述:
我們如何快速地以多個屬性對清單清單進行排序,例如在原題?
解法:
有兩個在列表中進行多屬性排序的有效方法:
使用Lambda 函數作為鍵:
s = sorted(s, key = lambda x: (x[1], x[2]))
此lambda 函數將每個sublist x 並傳回一個包含第二個和第三個元素的元組,有效地指定基於這兩個元素的排序順序屬性。
**使用operator.itemgetter():
import operator s = sorted(s, key = operator.itemgetter(1, 2))
operator.itemgetter()傳回一個從每個子清單中提取指定元素的函數,從而使基於多個屬性排序。
在這兩種情況下,排序順序都是由鍵函數或 itemgetter 參數中指定的屬性索引的順序決定。
附加說明:
對於就地排序,您可以使用 s.sort () 直接使用對應的鍵函數:
s.sort(key = operator.itemgetter(1, 2))
以上是如何在Python中按多個屬性對清單清單進行高效率排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!