Python 如何对数组按照多个条件排序
小提示:用 sorted() 函数以及 lambda 表达式。
对一个简单的数组,比如 lst = [1, 3, 2],进行排序,调用 sorted() 函数的方法比较直观。直接用 sorted(lst) 即可,然后取其返回值即可。 如果需要逆序排列,添加 reverse=True 这个参数就可以。 顺序排列,则不需要加 reverse=True,或者把 reverse=True 改为 reverse=False。

对一个由 tuple (元组) 组成的数组,如果只是按照每个 tuple 中的第一个元素进行排序,则直接按照简单数组来处理即可。 sorted() 函数会将每个 tuple 按照 tuple 中的第一个元素进行排序。如果要修改默认行为,则可以使用 lambda 表达式。 lambda 表达式的好处是, 可以设置成先按照某个元素进行排序, 然后再按照另外一个元素排序。这样就比较灵活了。 实际使用中,这种场景是比较常见的。比如下面的例子中, 我们看到 sorted() 的参数中有 key=lambda x: (x[0], x[1], x[2]) -- lambda 是个关键字, x 是个元组, (x[0], x[1], x[2]) 意味着先按照元组中的第一个元素,再按照元组中的第二个元素, 最后按照元组中的第三个元素排序。 调换各个元素的位置,就改变了排序的优先级行为。

同样,对一个由 dataclass 对象组成的数组,也可以按照类似的思路进行排序。只不过,这时我们用点号(比如 x.price ), 而不是用方括号( x[1] ),来表示某个元素了。
