我想显示从大年龄到小年龄的列表。 这是我的清单:
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)]
我怎么能这样做?
答案 0 :(得分:1)
将sorted
与key
和reverse
<强>实施例强>
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)]