首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对语义版本的python列表进行排序

对语义版本的python列表进行排序
EN

Stack Overflow用户
提问于 2020-12-16 02:42:38
回答 2查看 275关注 0票数 0

我有一个语义代码版本列表,我想根据semver对其进行排序。以下是默认排序不正确的示例:

代码语言:javascript
运行
复制
['0.0.1', '0.0.2', '0.1.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0', '0.2.0']

“0.2.0”应在“0.10.0”之前。我知道有语义库,但没有看到任何如何对它们进行排序的示例,而是检查语义版本的有效性。

EN

回答 2

Stack Overflow用户

发布于 2020-12-16 02:54:01

下面的代码应该可以完成这项工作:

代码语言:javascript
运行
复制
a = ['0.0.1', '0.0.2', '0.1.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0', '0.2.0']

a.sort(key = lambda x: [int(y) for y in x.split('.')])

print(a)

查看结果:

代码语言:javascript
运行
复制
['0.0.1', '0.0.2', '0.1.0', '0.2.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0']

即使列表包含‘0.12.0.1’,它仍然有效:

代码语言:javascript
运行
复制
b = ['0.12.0.1', '0.0.1', '0.0.2', '0.1.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0', '0.2.0']

b.sort(key = lambda x: [int(y) for y in x.split('.')])

print(b)

结果如下:

代码语言:javascript
运行
复制
['0.0.1', '0.0.2', '0.1.0', '0.2.0', '0.10.0', '0.11.0', '0.12.0', '0.12.0.1', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0']
票数 3
EN

Stack Overflow用户

发布于 2020-12-16 02:45:33

元组从左到右进行比较,因此将每个元素拆分成一个整数元组,并将其用作键:

代码语言:javascript
运行
复制
l = ['0.0.1', '0.0.2', '0.1.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0', '0.2.0']
print(sorted(l, key=lambda version: tuple(int(n) for n in verion.split("."))))
# ['0.0.1', '0.0.2', '0.1.0', '0.2.0', '0.10.0', '0.11.0', '0.12.0', '0.13.0', '0.13.1', '0.13.2', '0.14.0', '0.15.0', '0.16.0', '0.17.0', '0.18.0', '0.19.0']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65311817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档