Python 如何對數(shù)組按照多個條件排序
小提示:用 sorted() 函數(shù)以及 lambda 表達(dá)式。
對一個簡單的數(shù)組,比如 lst = [1, 3, 2],進(jìn)行排序,調(diào)用 sorted() 函數(shù)的方法比較直觀。直接用 sorted(lst) 即可,然后取其返回值即可。 如果需要逆序排列,添加 reverse=True 這個參數(shù)就可以。 順序排列,則不需要加 reverse=True,或者把 reverse=True 改為 reverse=False。

對一個由 tuple (元組) 組成的數(shù)組,如果只是按照每個 tuple 中的第一個元素進(jìn)行排序,則直接按照簡單數(shù)組來處理即可。 sorted() 函數(shù)會將每個 tuple 按照 tuple 中的第一個元素進(jìn)行排序。如果要修改默認(rèn)行為,則可以使用 lambda 表達(dá)式。 lambda 表達(dá)式的好處是, 可以設(shè)置成先按照某個元素進(jìn)行排序, 然后再按照另外一個元素排序。這樣就比較靈活了。?實際使用中,這種場景是比較常見的。比如下面的例子中, 我們看到 sorted() 的參數(shù)中有?key=lambda x: (x[0], x[1], x[2]) -- lambda 是個關(guān)鍵字, x 是個元組, (x[0], x[1], x[2]) 意味著先按照元組中的第一個元素,再按照元組中的第二個元素, 最后按照元組中的第三個元素排序。 調(diào)換各個元素的位置,就改變了排序的優(yōu)先級行為。

同樣,對一個由 dataclass 對象組成的數(shù)組,也可以按照類似的思路進(jìn)行排序。只不過,這時我們用點號(比如 x.price ), 而不是用方括號(?x[1]?),來表示某個元素了。
