这是我的元组列表
[('Raven', '18'), ('Lion', '6'), ('Unassigned', '0'), ('Cobra', '6')]
我想按照元组中数字的值对它们进行排序,以实现此顺序。
[('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]
执行此操作的效果如何?我应该使用sorted()
吗?
答案 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]