我有一组版本号,例如:
["1.11", "2.0.0", "1.2", "2", "0.1", "1.2.1", "1.1.1", "2.0"]
我希望将它们按从小到大的顺序排序。我发现可以使用sorted()
函数来完成排序。这是我想到的函数:
def order(l):
# Sorts numbers from smallest to largest
orderedList = sorted(l)
strList = ""
for i in range(len(orderedList)):
strList += orderedList[i]
# Don't put a comma for the last loop
if i < len(orderedList) - 1:
strList += ", "
print(strList)
所以,
order(["1.11", "2.0.0", "1.2", "2", "0.1", "1.2.1", "1.1.1", "2.0"])
目前的输出结果是:
0.1, 1.1.1, 1.11, 1.2, 1.2.1, 2, 2.0, 2.0.0
。
这看起来是正确的,但我需要它按不同的顺序排序。
我的期望输出结果是:
0.1, 1.1.1, 1.2, 1.2.1, 1.11, 2, 2.0, 2.0.0
换句话说,我需要告诉程序,1.11
就像 one.eleven
,而不是十进制的 one.oneone
,因此比 1.2
或 1.2.1
大。类似于 Minecraft 的版本控制系统;1.18
比 1.8.9
大,我需要函数按此方式排序。但是 sorted()
函数将其排序成 1.8.9
大于 1.18
。
有没有我错过的明显解决方案?
这比我预期的更复杂吗?
我是否需要创建自己的排序函数作为 sorted()
的替代品?
我是否可以使用 sorted()
中的 key 参数来构建自己的顺序?如果可以,如何实现?
提前感谢!