我有不同的对象一个JSON文件,每个对象具有一个版本值,如:蟒解析列表版本号
“版本”:[2,10,5,1]
我想要根据版本值过滤对象,我只对获取范围感兴趣。例如
获取所有对象版本> 2.5.3.10和版本< 3.0
我欣赏的帮助。
问候
我有不同的对象一个JSON文件,每个对象具有一个版本值,如:蟒解析列表版本号
“版本”:[2,10,5,1]
我想要根据版本值过滤对象,我只对获取范围感兴趣。例如
获取所有对象版本> 2.5.3.10和版本< 3.0
我欣赏的帮助。
问候
咄,我只注意到我可以这样做:
if data['version'] > [2, 5, 3, 10]:
print "that is old"
Python的自动执行数学,爱是爱吧:)
是的,来自[文档](https://docs.python.org/2/tutorial/datastructures.html#comparing-sequences-and-other-types)的重要部分:'比较使用了词典排序:首先前两项进行比较,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,等等,直到任何一个序列被耗尽 – ernie
字典序通常不足以用于比较的版本。你可以使用例如。从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")
你有没有编写任何代码?你在使用JSON库吗?数据结构的其余部分是什么样的? – ernie