如何对数字字符串的python列表进行排序

如何对数字字符串的python列表进行排序,python,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 = [float(x) for x in b] >>> b.sort() >>> b [949.0, 1099

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

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 = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]

但是list
b
是排序,而不是list
a

将它们转换为
int
float
甚至
十进制
(因为它有尾随数字)


您希望根据
浮点值
值(而不是字符串值)进行排序,因此请尝试:

>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
使用内部排序将其转换为浮动,然后正确排序:

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

因此,如果有人处理诸如0.png、1.png、10.png、2.png之类的数字和扩展名,您将把它们作为字符串进行排序,但按值排序,而不是按字典排序。。。 我们需要检索和排序扩展名之前的字符,因为此扩展名不允许我们将名称转换为浮点数:

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

a
已排序
1
9
小。我希望索引
0中的数字总是较大,索引
0中的数字总是较小,这可能是理想的,也可能不是理想的。@Keyser我的观点是你不需要lambda,你可以用
key=float
。让我的答案更酷?实际上,我忘记了关键功能@Keyser使用
sort(key=float)
实现了同样的成员来更新列表,就像
myList=sorted(myList,key=lambda x:float(x[:-4]))一样。
是的,您是对的。谢谢@L.Goyal