嗯,你可以使用sort()
方法:
lst = [[1, 'orange'], [3, 'banana'], [2, 'pear'], [1, 'apple']]
lst.sort(key=lambda x: (-x[0], x[1]))
lst
=> [[3, 'banana'], [2, 'pear'], [1, 'apple'], [1, 'orange']]
如果是方法是不允许或者,你可以写在相应的比较自己的排序方法:
def compare(x, y):
return -cmp(x[0], y[0]) or cmp(x[1], y[1])
def quicksort(lst):
if not lst:
return []
return (quicksort([x for x in lst[1:] if compare(x, lst[0]) < 0])
+ [lst[0]] +
quicksort([x for x in lst[1:] if compare(x, lst[0]) >= 0]))
quicksort([[1, 'orange'], [3, 'banana'], [2, 'pear'], [1, 'apple']])
=> [[3, 'banana'], [2, 'pear'], [1, 'apple'], [1, 'orange']]
好,你可以使用'sort'到位进行排序,而不是'sorted'返回,而无需修改输入排序列表..但为什么它不管你用什么功能? –
是的,是有办法做到这一点不使用排序功能。 – thefourtheye
你有什么尝试?这些限制表明这是功课,如果你已经分配了此作为家庭作业,你可能已经收到了分配给写一个排序函数。如果是这种情况,向我们展示您所写的类型会很有帮助。 – user2357112