【发布时间】:2020-02-27 07:04:28
【问题描述】:
在 SQL 中,我们可以为每个排序键指定 desc/asc 顺序,即order by key1 desc, key2 asc。
如何在 python 中对元组列表进行排序?
假设我有一个类似的列表
[("a", "b", "e"), ("b", "a", "c"), ("b", "a", "d")]
我想按 asc 顺序使用第二个键,按 desc 顺序使用第三个 ky。所以结果是
[("b", "a", "d"), ("b", "a", "c"), ("a", "b", "e")]
注意,元素可以是具有比较方法的任何类型(即__lt__、__gt__ 等)
【问题讨论】:
-
你可以试试这个,
sorted(sorted(l, key=lambda x:x[1]), key=lambda x:x[2], reverse=True)。可能有比这更好的解决方案! -
这可能会有所帮助。 stackoverflow.com/questions/3121979/…
-
@shaikmoeed 确实有比这更好的解决方案,即正确执行的解决方案:-P
-
@HeapOverflow 我觉得两次使用
sort是多余的。可能有比这更好的通用解决方案 ;-) !!! -
@HeapOverflow 正如我之前所说,这个解决方案是多余的(因为当元组包含更多元素以按不同顺序排序时,它是不可扩展的)。是的,这可能是这个特定帖子的最佳选择,但我还没有测试过时间。