更新:我应该早点指定,但不是所有的名字都是浮点数。例如,其中一些被“前缀”为“YT”。例如“YT1.1。所以,你有同样的问题YT1.9<;YT1.11应该是真的。我真的很惊讶字符串比较失败。。。。
你好, 这应该是个很简单的问题,但我似乎找不到答案。我想把一堆XL工作表按名字分类。每个名字都是数字,但与教科书“章节”的编号方式相同,这意味着第4.11节在第4.10节之后,第4.9节和第4.1节都在第4.10节之后。我以为简单地将这些数字作为字符串进行比较就可以了,但我得到了以下结果:
>>> s1 = '4.11'
>>> s2 = '4.2'
>>> s1> s2
False
>>> n1 = 4.11
>>> n2 = 4.2
>>> n1 > n2
False
如何比较这两个值,使4.11大于4.2?
这不是一种内置的方法,但它应该起作用:
可以清理,但它给了你要点。
你要找的是所谓的“自然排序”。这与“词典分类”相反。有几种方法可以做到这一点,因为您想要的确切输出是特定于实现的。快速的google搜索会产生这样的结果(注意*这不是我的代码,也不是我测试过的代码):
http://nedbatchelder.com/blog/200712.html#e20071211T054956
将名称转换为整数元组并比较元组:
更新:由于您的名称显然可以包含数字以外的其他字符,因此您需要检查
ValueError
,并保留无法转换为int的任何值不变:要对名称列表进行排序,请使用
splittedname
作为sorted
的键函数:相关问题 更多 >
编程相关推荐