【发布时间】:2015-01-06 01:38:50
【问题描述】:
我正在尝试使用此代码按多个条件对列表进行排序。
lis = sorted([lsDataSorted[i:i+8] for i in range(0,len(lsDataSorted),8)],key=lambda x:(x[7],int(x[5])-int(x[6]),x[5],x[0]),reverse=True)
现在,我们不必费心谈论每个对象是什么,但我们看到我有一个“反向”排序功能。现在,我的最后一个条件x[0] 恰好是一个名字列表。通过使用reverse=True,我们知道排序将以相反的顺序(z-a)。我的问题是,我可以仅在最后一种情况下“逆转”恢复正常吗?如果是,那么如何?
【问题讨论】:
-
This answer 应该可以帮到你。
-
查看this question 及其答案。
-
好吧,换句话说,用同样的 lambda 东西写一个新行更好,但最后一个条件?
-
什么是
lsDataSorted?有什么例子吗? -
它是一个列表 ls = ["name1","a1","b1","c1",..."h1","name2","a2","b2"," c2"...] 等等。我想按某些条件对 8 个不同的“类别”进行排序。它实际上最终将是一个表格,我根据一些值和最后的对象名称进行排序