python - 按多列排序时为每列设置升序降序

标签 python list sorting

<分区>

我有一个要排序的列表 d。我先按第一列排序。如果它在那里是平局,那么我将继续使用第二列进行排序。假设我想按第一列升序排序,但按第二列降序排序。升序是默认值,使用 reverse 键我认为下面应该可以工作。

sorted(d,key=lambda x: (x[0],x[1]),reverse=(False,True))

但事实并非如此。它给出以下错误。

    reverse=(False,True))

TypeError: an integer is required (got type tuple)

那么,如果我做的不对,该如何解决?或者这样做的方式完全不同?对此的建议会有所帮助。

我的问题确实有一些重复,但已经有有趣的回答,所以我想保留它。

最佳答案

(可能有点矫枉过正,但是..)使用 pandas 和 args ascending=[True, False]:

d = [[1,2], [2,2], [2,3], [2,4], [3,1]]
df=  pd.DataFrame(d)

sorted_values = df.sort_values(by=[0,1], ascending=[True,False])
sorted_list = sorted_values.agg(list,1).tolist()

[[1, 2], [2, 4], [2, 3], [2, 2], [3, 1]]

关于python - 按多列排序时为每列设置升序降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51252687/

相关文章:

c++ - 什么列表[i]++;应该做什么?

javascript - 是什么导致了这种奇怪的洗牌算法行为?

php - 在php和wordpress中合并然后排序2个数组

python - 比较两条信息以找出相似之处

python - mysqldb 自动添加 ' ' 到 %s

python - 接受参数 : Missing 1 required positional argument 的 flask get 方法

python - python中寻址属性的风格

python - 如何矢量化我的函数以加快数据帧上的操作?

javascript - 如何检索 ionic 3 上的 firebase 列表,该列表会在发生更改时更新?

java - 排序结果在 Java 中以 A, a, B, b... 的形式递增返回