如何排序python数字字符串列表

时间:2013-07-04 15:47:22

标签: python

我正在尝试对包含数字的字符串列表进行排序

a = ["1099.0","9049.0"]
a.sort()
a
['1099.0', '9049.0']

b = ["949.0","1099.0"]
b.sort()    

b
['1099.0', '949.0']

a
['1099.0', '9049.0']

但是列表b正在排序,而不是列出a

5 个答案:

答案 0 :(得分:64)

您希望根据float值(不是字符串值)进行排序,请尝试:

>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']

答案 1 :(得分:15)

使用lambda内部排序将它们转换为float,然后正确排序:

a = sorted(a, key=lambda x: float(x))

所以你将它们作为字符串保留,但按值排序而不是按字典顺序排序

答案 2 :(得分:3)

将它们转换为intfloat或甚至decimal(因为它有尾随数字)

>>> b = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]

答案 3 :(得分:1)

它们都是有序的。 '1'出现在'9'之前。看看这里: Ascii table

答案 4 :(得分:0)

如果有人要处理数字和扩展名,例如0.png,1.png,10.png,2.png ... 我们需要检索扩展名之前的字符并对其进行排序,因为此扩展名不允许我们将名称转换为浮点数:

sorted(list, key=lambda x: float(x[:-4]))