Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中带多个小数点的数字排序_Python_Sorting - Fatal编程技术网

python中带多个小数点的数字排序

python中带多个小数点的数字排序,python,sorting,Python,Sorting,我有一个文本文件,其中包含以下内容: 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.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@@@2”这样的数字是单独排序的,但逻辑上它应该在1之后。如何在Python中实现这一点?是否在“.”处拆分,然后分别比较?

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

sorted(inputlist, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])
这将为每一行生成一个整数列表,然后按字典顺序对这些整数进行排序;e、 g.在第一个不同的元素上

演示:


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

sorted(inputlist, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])
这将为每一行生成一个整数列表,然后按字典顺序对这些整数进行排序;e、 g.在第一个不同的元素上

演示:


key=lambda x:float(x.rstrip(“@”)
是否可以替代整数列表?@inspectorG4dget:no,因为这里有3个分量的数字,它们不是有效的浮点数。当我尝试在代码中抛出“ValueError:invalid literal for int(),以10为底:'\x02'” @MartijinPieters@nij_wiz:您的问题中没有包含数据中的其他字符。对于引发该异常的行,
print repr(line)
产生了什么?@newbie:see
key=lambda x:float(x.rstrip(“@”)
是INT列表的可接受的替代方案吗?@inspectorG4dget:no,因为这里有带3个组件的数字,不是有效的浮点数。当我尝试在代码中抛出“ValueError:invalid literal for int(),以10为基数:'\x02''时@MartijinPieters@nij_wiz:您的问题中没有包含数据中的其他字符。
print repr(line)
为引发该异常的行生成了什么?@newbie:see