假设我有一个数据表,我希望能够从按某些条件(如 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 排序是稳定的,这意味着比较相等的任何元素都将保持其原始顺序。通过从最不重要的键到最重要的键进行多次排序,您会发现最终结果正是您所需要的。
