用Python对字符串格式的数字排序

8 投票
4 回答
9108 浏览
提问于 2025-04-15 21:21

我有一个列表,里面有一些章节的数字,都是以字符串的形式存在的。

当我用键值函数对这些键进行排序时,结果却不对。

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('.')])

撰写回答