我正在尝试对包含数字的字符串列表进行排序
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
答案 0 :(得分:64)
您希望根据float
值(不是字符串值)进行排序,请尝试:
>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
答案 1 :(得分:15)
答案 2 :(得分:3)
将它们转换为int
或float
或甚至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]))