2024-05-20 11:55:28 发布
网友
我有一个元组列表:
li = [('fink', 3), ('flip', 3), ('flock', 4), ('foo', 12), ('foot', 20), ('football', 20), ('futz', 10), ('flip', 3), ('flank', 3), ('flop', 3)]
我怎样才能先按降序编号,然后按字母降序排序?结果将是:
虽然上面的代码按降序正确排序,但单词不是按字母顺序排序的。在
这对于单个itemgetter来说太复杂了。使用lambda代替:
itemgetter
lambda
sorted_li = sorted(li, key=lambda x: (-x[1], x[0]))
它的速度与使用itemgetter的两个连续排序的速度差不多,但是它的代码更少,可读性可能更高。在
由于Python的sort是稳定的,因此最容易进行两次排序:
sorted_li = sorted(li, key=itemgetter(1), reverse=True) sorted_li.sort(key=itemgetter(0))
sorted_li = sorted(li, key=itemgetter(0)) sorted_li.sort(key=itemgetter(1), reverse=True)
但要注意的是,你必须首先使用你的最低优先级顺序,然后其他优先级则以优先级为基础。 最高优先级顺序必须是最后一个。 这是您在尝试使用排序函数时必须考虑的最重要的事情。在
这对于单个
itemgetter
来说太复杂了。使用lambda
代替:它的速度与使用
itemgetter
的两个连续排序的速度差不多,但是它的代码更少,可读性可能更高。在由于Python的sort是稳定的,因此最容易进行两次排序:
由于Python的sort是稳定的,因此最容易进行两次排序:
但要注意的是,你必须首先使用你的最低优先级顺序,然后其他优先级则以优先级为基础。 最高优先级顺序必须是最后一个。 这是您在尝试使用排序函数时必须考虑的最重要的事情。在
相关问题 更多 >
编程相关推荐