关于python:如何使用`sorted`对元组列表进行排序?

How do I use `sorted` to sort a list of tuples?

本问题已经有最佳答案,请猛点这里访问。

这是我的元组列表

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

我想按元组中数字的值对它们进行排序,以达到这个顺序。

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

我应该使用sorted()吗?


sorted接受一个key参数,您可以在该参数中指定需要排序的基础:

1
2
3
4
5
6
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')]

您可以使用sorted,使用以下key

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

这里,key所做的是在排序之前将定义好的lambda函数应用于列表中的每个元素。使用列表理解来考虑以下等价物:

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

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

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