在Python中使用版本号对元组列表进行排序

2024-09-30 14:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表,如下所示:

listTup = [('5.1','@1fedb3d2',1), ('5.10','@79109bbe',1), ('5.3','@b52bd219',1), ('5.2','@e4e9b43e',1), ('5.11','@2538bf70',1)]

并希望使用每个元组中的第一个元素(其中第一个元素是版本号)对其进行排序,以便最终结果为:

listTup = [('5.1','@1fedb3d2',1), ('5.2','@e4e9b43e',1), ('5.3','@b52bd219',1), ('5.10','@79109bbe',1),('5.11','@2538bf70',1)]

我能够通过增加版本号对列表进行排序

list.sort(key=lambda s: map(int, s.split('.')))

但当以以下方式与元组列表一起使用时:

listTup = *sorted(listTup,key=lambda s: map(int, s.split('.')))

产生错误

'tuple' object has no attribute 'split'

我相信这只是一个简单的问题,通过将前一行代码与

listTup.sort(key=lambda x: x[0])

但我一直无法找到如何做到这一点。我还必须注意,我无法使用numpy这样的库,因为我正在编写的软件无法导入库和包


Tags: lambdakey元素map列表排序版本号sort
1条回答
网友
1楼 · 发布于 2024-09-30 14:24:08

正确的方法是:

listTup.sort(key=lambda x: int(x[0].split('.')[1]))

key=lambda函数从列表中接收无法拆分的元组。相反,您需要元组的第一个元素x[0]。在split(返回一个列表)之后,您需要第二个元素()[1],它是您想要的键

相关问题 更多 >