python如何对int、str列表的列表进行排序[关闭]

2023-12-12

给定一个 int、str 列表,我需要找到一种方法将其从最高到最低排序,而不使用排序。 所以如果我有:

list = [[1, 'orange'], [3, 'banana'], [2, 'pear'], [1, 'apple']]

我应该按数字排序,如果数字相同,则按字母顺序返回,例如:

[[3, 'banana'], [2, 'pear'], [1, 'apple'], [1, 'orange']]

有没有办法在不使用排序函数的情况下做到这一点?


嗯,你可以使用sort() method:

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']]

If that方法也不允许,您可以使用相应的比较器编写自己的排序过程:

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']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python如何对int、str列表的列表进行排序[关闭] 的相关文章

随机推荐