为什么在下面的一段代码中,对一堆对象属性进行多重排序的规范颠倒了



下面的函数获取(attribute,reverse_order(的元组,并对每个元组上的给定列表xs进行排序。为什么这里使用反向?

def multisort(xs, specs):
for key, reverse in reversed(specs):
xs.sort(key=attrgetter(key), reverse=reverse)
return xs

文档链接:https://docs.python.org/3/howto/sorting.html

在激发multisort函数的示例中进行了解释:

这个奇妙的属性可以让您在一系列排序步骤。例如,按降序对学生数据进行排序等级,然后升序age;先进行age排序,然后进行排序再次使用等级

>>> s = sorted(student_objects, key=attrgetter('age'))     # sort on secondary key 
>>> sorted(s, key=attrgetter('grade'), reverse=True)       # now sort on primary key, descending
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

为了使排序逻辑正确,您需要先按次关键字排序,后按主键排序。

反转multisort函数内部排序键的原因是,当调用函数时,能够以更直观的顺序(主、辅(写入它们


我认为链接文档中给出的特定示例对于证明为什么如果两个排序以非反向顺序通过,结果会是错误的没有用,但我现在想不出更好的了

最新更新