gpt4 book ai didi

python - 在带 2 个小数的字符串中排序数字的问题

转载 作者:行者123 更新时间:2023-12-05 01:50:24 24 4
gpt4 key购买 nike

所以我有一个版本号列表,例如:

["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.11,而不是十进制的 one.oneone,并且因此大于 1.21.2.1。类似于 Minecraft 的版本控制系统; 1.181.8.9 大,我需要这样的函数来对程序进行排序。但是 sorted() 函数对其进行排序,以便 1.8.9 大于 1.18

是否有我错过的明显解决方案?

它比我预期的更复杂吗?

我是否需要创建自己的排序函数来替代 sorted()

我能否以某种方式使用 sorted 中的 key 参数来构建我自己的顺序?如果是,怎么办?

提前致谢

最佳答案

您正在寻找的东西真的叫做人类。并且有一个用于该目的的库:

您只需先pip install natsort 即可获取库。为什么我们需要重新发明轮子而不是专注于解决我们真正的问题?

import natsort
ans = natsort.natsorted(lst)
ans
['0.1', '1.1.1', '1.2', '1.2.1', '1.11', '2', '2.0', '2.0.0']

另一个例子

heights = '125 inches,11 inches,25 inches,2 inches,100 inches'
sort_heights = natsort.natsorted(heights.split(','))
sort_heights
['2 inches', '11 inches', '25 inches', '100 inches', '125 inches']

关于python - 在带 2 个小数的字符串中排序数字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73151569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com