我一直在尝试排序一个看起来像这样的数组:
sav = [['Name: ', 'Alex', 'Score: ', '2'], ['Name: ', 'Josh, 'Score: ', '3'], ['Name: ', 'James', 'Score: ', '1']]
所以它看起来像:
sav = [['Name: ', 'James', 'Score: ', '1'], ['Name: ', 'Alex, 'Score: ', '2'], ['Name: ', 'Josh', 'Score: ', '3']]
这将按[3]
索引排序,但由于数字是一个字符串,我不知道如何做到这一点。(这可能看起来像一个重复的问题,但我环顾四周,但未能找到答案。)
发布于 2018-09-10 11:15:59
您可以使用以下lambda
作为排序键:
>>> sorted(sav, key=lambda x: int(x[3]))
[['Name: ', 'James', 'Score: ', '1'],
['Name: ', 'Alex', 'Score: ', '2'],
['Name: ', 'Josh', 'Score: ', '3']]
lambda
此处的函数从每个列表中选取索引3处的元素,并将其视为整数(使用int
)。列表按这些整数排序。
如果保留为字符串,则在排序时会得到奇怪的结果,因为字符串按字典顺序排序。例如,'12' < '8'
。
这将返回列表的已排序副本sav
- 您可以将名称重新绑定到已排序的列表:
sav = sorted(sav, key=lambda x: int(x[3]))
https://stackoverflow.com/questions/-100002593
复制相似问题