2014-05-14 26 views
0

我有不同的对象一个JSON文件,每个对象具有一个版本值,如:蟒解析列表版本号

“版本”:[2,10,5,1]

我想要根据版本值过滤对象,我只对获取范围感兴趣。例如

获取所有对象版本> 2.5.3.10和版本< 3.0

我欣赏的帮助。

问候

+0

你有没有编写任何代码?你在使用JSON库吗?数据结构的其余部分是什么样的? – ernie

回答

0

咄,我只注意到我可以这样做:

if data['version'] > [2, 5, 3, 10]: 
    print "that is old" 

Python的自动执行数学,爱是爱吧:)

+1

是的,来自[文档](https://docs.python.org/2/tutorial/datastructures.html#comparing-sequences-and-other-types)的重要部分:'比较使用了词典排序:首先前两项进行比较,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,等等,直到任何一个序列被耗尽 – ernie

1

字典序通常不足以用于比较的版本。你可以使用例如。从distutils.version获得可用比较的LooseVersion。

from distutils.version import LooseVersion 

assert LooseVersion("10.1.1") < LooseVersion("100.1.1") 

有一些微妙的问题,在列表中直接使用的版本:

[1,0] < [1,0,0] == True 
[1,0] == [1,0,0] == False 

这应该覆盖所有的边缘情况:

LooseVersion(".".join(version)) > LooseVersion("2.5.3.10") and LooseVersion(".".join(version)) < LooseVersion("3.0")