我正在尝试对包含数字的字符串列表进行排序
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']
Run Code Online (Sandbox Code Playgroud)
但是列表b是排序而不是列表a
ars*_*jii 68
您想要根据float值(而不是字符串值)进行排序,请尝试:
>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
Run Code Online (Sandbox Code Playgroud)
Sam*_*zzo 17
使用lambda inside sort将它们转换为float然后正确排序:
a = sorted(a, key=lambda x: float(x))
Run Code Online (Sandbox Code Playgroud)
所以你将它们作为字符串保留,但按值排序而不是按字典顺序排序
如果有人正在处理数字和扩展名,例如 0.png、1.png、10.png、2.png……我们需要在扩展名之前检索和排序字符,因为此扩展名不允许我们转换浮动名称:
myList = sorted(myList, key=lambda x: float(x[:-4]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57040 次 |
| 最近记录: |