我有一个语义代码版本列表,我想根据semver对它进行排序。以下是默认排序不正确的示例:
['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']
Run Code Online (Sandbox Code Playgroud)
“0.2.0”应该位于“0.10.0”之前。我知道有语义库,但没有看到任何如何使用它们进行排序的示例,而是它们检查语义版本的有效性。
以下代码应该可以完成这项工作:
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)
Run Code Online (Sandbox Code Playgroud)
查看结果:
['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']
Run Code Online (Sandbox Code Playgroud)
即使列表包含“0.12.0.1”它也有效:
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)
Run Code Online (Sandbox Code Playgroud)
结果如下:
['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']
Run Code Online (Sandbox Code Playgroud)