Skip to main content
 首页 » 编程设计

python之在 Python 中按任意数量的条件排序

2025年05月04日15开发

假设我有一个数据表,我希望能够从按某些条件(如 SQL)排序的表中返回数据。问题是,我不知道我需要根据多少东西来排序,而 ORDER BY 命令后面可能只跟一个列名,或者两个,或者 100 个。

我看过其他答案:

s = sorted(s, key = lambda x: (x[1], x[2])) 

...但是元组参数是硬编码的,不是在运行时创建的。我希望能够做这样的事情:

# Build list of columns to sort by, in ascending order of priority 
orderings = [0, 2, ...] 
s = sorted(s, key = lambda x: orderings) 

这可能吗?我还有哪些其他选择?

请您参考如下方法:

一种简单的方法类似于您已有的方法:

s = sorted(s, key = lambda x: [x[i] for i in orderings]) 

否则你可以简单地多次排序。 Python 排序是稳定的,这意味着比较相等的任何元素都将保持其原始顺序。通过从最不重要的键到最重要的键进行多次排序,您会发现最终结果正是您所需要的。