首頁 > 後端開發 > Python教學 > 如何在Python中根據多個屬性對清單進行高效排序?

如何在Python中根據多個屬性對清單進行高效排序?

DDD
發布: 2024-12-11 18:02:13
原創
343 人瀏覽過

How Can I Efficiently Sort a List Based on Multiple Attributes in Python?

多屬性清單排序

基於單一屬性對清單進行排序非常簡單。但是,當多個屬性決定排序順序時,需要更複雜的方法。

考慮以下列表列表:

[[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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板