多屬性清單排序
基於單一屬性對清單進行排序非常簡單。但是,當多個屬性決定排序順序時,需要更複雜的方法。
考慮以下列表列表:
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
僅按「高」或「對列表進行排序」可以使用sorted(s, key = itemgetter(1)) 來實現short' 屬性。但是,如果排序順序必須同時基於高度和顏色屬性,則需要更有效的解決方案。
多屬性鍵函數
對透過多個屬性列表,可以定義一個鍵函數來傳回表示所需排序順序的元組。例如,以下鍵函數首先按高度排序,然後按顏色排序:
key = lambda x: (x[1], x[2])
使用此鍵函數,列表可以如下排序:
s = sorted(s, key=key)
或者,itemgetter使用( ) 可以更有效地達到相同的結果:
import operator key = operator.itemgetter(1, 2)
這個關鍵函數既更快又不涉及Python 函數呼叫。
直接排序
最後,透過使用 sort() 方法而不是排序()並重新分配,可以進一步簡化上述方法。這消除了建立新清單的需要:
s.sort(key=key)
以上是如何在Python中根據多個屬性對清單進行高效排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!