如何使用“ sorted”对元组列表进行排序?

时间:2018-12-31 15:52:07

标签: python sorting

这是我的元组列表

[('Raven', '18'), ('Lion', '6'), ('Unassigned', '0'), ('Cobra', '6')]

我想按照元组中数字的值对它们进行排序,以实现此顺序。

[('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]

执行此操作的效果如何?我应该使用sorted()吗?

2 个答案:

答案 0 :(得分:3)

sorted带有一个key参数,您可以在其中指定需要进行排序的依据:

lst = [('Raven', '18'), ('Lion', '6'), ('Unassigned', '0'), ('Cobra', '6')]

print(sorted(lst, key=lambda x: -int(x[1])))
# or print(sorted(lst, key=lambda x: int(x[1]), reverse=True))

# Outputs: [('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]

答案 1 :(得分:2)

您可以将sorted与以下key一起使用:

sorted(t, key = lambda x: int(x[1]), reverse=True)
[('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]

key的作用是在排序之前将定义的lambda函数应用于列表中的每个元素。考虑使用列表理解的以下等效项:

t = [int(x[1]) for x in t] 
# [18, 6, 0, 6]

然后使用此key对元组列表进行排序:

sorted(t, reverse=True)
[18, 6, 6, 0]