如何使用两个参数对元组进行排序?

How to sort a Tuple using two parameters?

元组列表包含 [('John',32),('Jane',22),('Doe',32),('Mario',55)]。我想按年龄和相同年龄的人按姓名字母顺序对列表进行排序?到目前为止,我只在 sorted() 函数中使用了 Lambda 函数,键是 name 或 age ?

输出应该是 -> [('Jane',22),('Doe',32),('John',32),('Mario',55)].

鉴于:

>>> lot=[('John',32),('Jane',22),('Doe',32),('Mario',55)]

你可以组成一个新的元组:

>>> sorted(lot, key=lambda t: (t[1],t[0]))
[('Jane', 22), ('Doe', 32), ('John', 32), ('Mario', 55)]

或者,在这种情况下,您可以反转元组:

>>> sorted(lot, key=lambda t: t[::-1])
[('Jane', 22), ('Doe', 32), ('John', 32), ('Mario', 55)]

您还可以使用 itemgetter 和两个参数,按照您希望结果键元组的顺序:

>>> from operator import itemgetter
>>> sorted(lot, key=itemgetter(1,0))
[('Jane', 22), ('Doe', 32), ('John', 32), ('Mario', 55)]