用Python对字符串格式的数字排序
我有一个列表,里面有一些章节的数字,都是以字符串的形式存在的。
当我用键值函数对这些键进行排序时,结果却不对。
keys = ['1.1', '1.2', '2.1', '10.1'] keys.sort() print keys ['1.1', '1.2', '10.1', '2.1']
我该怎么用排序函数来得到正确的结果呢?
['1.1', '1.2', '2.1', '10.1']
如果这个数组里面有这样的内容呢?
['1.1.1', '1.2.1', '10.1', '2.1'] -> ['1.1.1','1.2.1','2.1','10.1']
4 个回答
2
这个可以用:
keys.sort(key=lambda x: map(int, x.split('.')))
4
from distutils.version import StrictVersion
keys.sort(key=StrictVersion)
因为章节号是版本号的一部分,所以这可以满足你的需求。
10
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用这些数据。这个过程就像是从一个盒子里拿东西出来,然后把它放到另一个地方。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有找到。这就像是你在找一个特定的玩具,但盒子里却有很多其他的东西,让你很难找到。
为了避免这些问题,我们可以使用一些工具和方法来帮助我们更好地管理和处理数据。这样,我们就能更轻松地找到我们需要的东西,而不至于在一堆杂乱的东西中迷失。
总之,处理数据就像整理你的玩具,确保每个玩具都有它的位置,这样你下次想玩的时候就能快速找到它。
keys.sort(key=lambda x: [int(y) for y in x.split('.')])