利用排序鍵對列表進行多屬性排序
根據各個屬性對列表列表進行排序通常很簡單。然而,當涉及多個屬性時,就會出現困境。我們可以在不進行多輪排序的情況下高效排序嗎?
為了解決這個挑戰,我們引入了排序鍵的概念。排序鍵可作為為清單中的每個元素分配唯一值的函數,確定排序順序。
例如,在給定列表中:
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
排序依據無論是“高/矮”還是“顏色”,我們都可以定義一個鍵函數,根據這一些屬性傳回一個元組:
key = lambda x: (x[1], x[2])
使用這個鍵,我們可以使用排序函數對列表進行排序:
s = sorted(s, key = key)
或者,我們可以利用itemgetter 函數來提高效能:
import operator s = sorted(s, key = operator.itemgetter(1, 2))
此外,我們可以直接對使用指定鍵的排序函數進行列表:
s.sort(key = operator.itemgetter(1, 2))
透過排序鍵,我們實現了高效的多屬性排序無需多次排序。
以上是排序鍵如何根據多個屬性對清單進行高效率排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!