如何对 Python 数字字符串列表进行排序
- 2025-02-27 09:07:00
- admin 原创
- 58
问题描述:
我正在尝试对包含数字的字符串列表进行排序:
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
。
解决方案 1:
您想根据float
值(而不是字符串值)进行排序,因此请尝试:
>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
解决方案 2:
使用“sort”内的lambda将它们转换为浮点数,然后进行正确排序:
a = sorted(a, key=lambda x: float(x))
因此,您将把它们保留为字符串,但按值排序,而不是按字典顺序排序。
解决方案 3:
如果有人处理数字和扩展名,例如 0.png、1.png、10.png、2.png...我们需要检索并排序扩展名之前的字符,因为此扩展不允许我们将名称转换为浮点数:
myList = sorted(myList, key=lambda x: int(x[:-4]))
PD:多年后,我修改了这个答案,将浮点数改为整数,因为我认为它更高效、更精确。出于此目的需要浮点数的情况很少见,而且它可能会带来错误。
解决方案 4:
将它们转换为int
或float
或偶数decimal
(因为它有尾随数字)
>>> b = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD