How can I sort tuples by reverse, yet breaking ties non-reverse? (Python)

后端 未结 4 1083
青春惊慌失措
青春惊慌失措 2020-12-09 05:29

If I have a list of tuples:

results = [(\'10\', \'Mary\'), (\'9\', \'John\'), (\'10\', \'George\'), (\'9\', \'Frank\'), (\'9\', \'Adam\')]

4条回答
  •  甜味超标
    2020-12-09 06:29

    sort method accept optional key parameter.

    key specifies a function of one argument that is used to extract a comparison key from each list element

    You need to convert string to number:

    >>> results = [('10', 'Mary'), ('9', 'John'), ('10', 'George'), ('9', 'Frank'), ('9', 'Adam')]
    >>> results.sort(key=lambda x: (int(x[0]), x[1]), reverse=True)
    >>> results
    [('10', 'Mary'), ('10', 'George'), ('9', 'John'), ('9', 'Frank'), ('9', 'Adam')]
    

提交回复
热议问题