如果您想保留原始列表中的排序顺序,但仅按第一个元素排序,您可以这样做
>>> from operator import itemgetter
>>> a = [(1,'a'), (1, 'x'), (1,'b'), (2,'c')]
>>> sorted(a, key=itemgetter(0), reverse=True)
[(2, 'c'), (1, 'a'), (1, 'x'), (1, 'b')]
在Python中sort
and sorted
函数使用TimSort https://en.wikipedia.org/wiki/Timsort算法,这是一种稳定的排序。稳定意味着对于那些彼此比较相等的元素保留原始相对顺序。
如果您想按多个条件排序同时,如果是整数,您可以对键使用一个函数,返回与该数字相反的数字以进行反转,但在一般情况下,您可以通过按相反顺序排序多次来实现:
>>> b = sorted(a, key=itemgetter(1)) # sort by second element, ascending
>>> b.sort(key=itemgetter(0), reverse=True) # sort by first element, descending
>>> b
[(2, 'c'), (1, 'a'), (1, 'b'), (1, 'x')]