按元组{2}中元素2对元组列表进行排序

时间:2018-06-11 10:07:30

标签: python sorting tuples

我想显示从大年龄到小年龄的列表。 这是我的清单:

player = [("Dmitry", 15), ("Dima", 11), ("Sergey", 14), ("Andrey", 12), ("Nikita", 13)]

我可以使用player.sort的name元素对列表进行排序并获取此列表:

[('Andrey',12),('Dima',11),('Dmitry',15),('Nikita',13),('Sergey',14)]

但是我想要这个列表,其中年龄从大到小:

[('Dmitry',15),('Sergey',14),('Nikita',13),('Andrey',12),('Dima',11)]

我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

sortedkeyreverse

一起使用

<强>实施例

player = [("Dmitry", 15), ("Dima", 11), ("Sergey", 14), ("Andrey", 12), ("Nikita", 13)]
print( sorted(player, key=lambda x: x[1], reverse=True) )

<强>输出:

[('Dmitry', 15), ('Sergey', 14), ('Nikita', 13), ('Andrey', 12), ('Dima', 11)]

答案 1 :(得分:1)

您可以使用 itemgetter() 功能作为 key 参数并设置 {{3},以达到您想要的排序效果} true,因此列表按降序排列:

>>> from operator import itemgetter
>>> players = [("Dmitry", 15), ("Dima", 11), ("Sergey", 14), ("Andrey", 12), ("Nikita", 13)]
>>> players.sort(key=itemgetter(1), reverse=True)
>>> print(players)
[('Dmitry', 15), ('Sergey', 14), ('Nikita', 13), ('Andrey', 12), ('Dima', 11)]

答案 2 :(得分:1)

您需要传递 lambda表达式作为sorted方法的参数。

sorted_list = sorted(player, key=lambda tup: tup[1], reverse=True)

<强>输出

[('Dmitry', 15), ('Sergey', 14), ('Nikita', 13), ('Andrey', 12), ('Dima', 11)]

答案 3 :(得分:1)

使用lambda的另一种方法,但没有 reverse=True

player = [("Dmitry", 15), ("Dima", 11), ("Sergey", 14), ("Andrey", 12), ("Nikita", 13)]
player.sort(key=lambda x: -x[1])

# [('Dmitry', 15), ('Sergey', 14), ('Nikita', 13), ('Andrey', 12), ('Dima', 11)]