gpt4 book ai didi

python - 在python中对具有多个小数点的数字进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:27 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含以下内容:

02.03.04@@
02.04.01@@
02.04.03.02@@
02.06.04.01@@
02.06.04.02@@
02.06.09@@
02.13.01@@
02.13.02@@
1.01@@
1.02@@
1.03@@
1.04@@
1.05@@
1.06@@
1.07@@
1.08@@
1.09@@
1.1@@
2.24@@
4.12@@

我需要对其进行排序。如您所见,以 1、2 等开头的数字已经使用 sorted() 进行了排序。但是像“02.04.03.02@@”这样的数字是单独排序的,但从逻辑上讲它应该在 1 之后。如何在 Python 中执行此操作?我在'.' split 吗?然后单独比较?

最佳答案

拆分并映射到键中的整数:

sorted(inputlist, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])

这会为每一行生成一个整数列表,然后按字典顺序对这些整数进行排序;例如在第一个不同的元素上。

演示:

>>> sample = '''\
... 02.03.04@@
... 02.04.01@@
... 02.04.03.02@@
... 02.06.04.01@@
... 02.06.04.02@@
... 02.06.09@@
... 02.13.01@@
... 02.13.02@@
... 1.01@@
... 1.02@@
... 1.03@@
... 1.04@@
... 1.05@@
... 1.06@@
... 1.07@@
... 1.08@@
... 1.09@@
... 1.1@@
... 2.24@@
... 4.12@@
... '''.splitlines()
>>> from pprint import pprint
>>> sorted(sample, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])
['1.01@@', '1.1@@', '1.02@@', '1.03@@', '1.04@@', '1.05@@', '1.06@@', '1.07@@', '1.08@@', '1.09@@', '02.03.04@@', '02.04.01@@', '02.04.03.02@@', '02.06.04.01@@', '02.06.04.02@@', '02.06.09@@', '02.13.01@@', '02.13.02@@', '2.24@@', '4.12@@']
>>> pprint(_)
['1.01@@',
'1.1@@',
'1.02@@',
'1.03@@',
'1.04@@',
'1.05@@',
'1.06@@',
'1.07@@',
'1.08@@',
'1.09@@',
'02.03.04@@',
'02.04.01@@',
'02.04.03.02@@',
'02.06.04.01@@',
'02.06.04.02@@',
'02.06.09@@',
'02.13.01@@',
'02.13.02@@',
'2.24@@',
'4.12@@']

关于python - 在python中对具有多个小数点的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013213/

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