'reset'字典中带有值的剩余元素(不对其进行锅炉化),可以吗?



所以我有以下代码(工作)用于计算版本号

#bump version
version = {
'Major:': old_version[0],
'Minor:': old_version[1],
'Patch:': old_version[2],
}
version[levelstr] = str(int(version[levelstr]) + 1)
new_version_str = version['Major:'] + "." + version['Minor:'] + "." + version['Patch:']

只是我忘记了,例如,如果主要版本是递增的,则次要版本和补丁应该为零(如果次要版本也是如此,补丁应该为零)。到目前为止,我已经避免了用if来对它进行冗长的描述,我更愿意避免像下面这样的代码(因为这是一种非常嘈杂和笨拙的方式-但是会。工作):

if levelstr=='Major:':
version['Minor:'] = '0';
version['Patch:'] = '0';

那么基本上有没有一些聪明的方法可以做到:为元素右边的元素设置一个值?或者,我可以将字符串转换为索引,然后使用序列代替。

?

听起来像您想要一个Version类,其中设置器根据设置器改变Major,MinorPatch版本类型实例变量。

或者,你可以看看我在这个网站上发布过的最糟糕的答案:

def increment_version(old_version, key):
noop = lambda x: x
incr = lambda x: x+1
reset = lambda x: 0
keys = ("Major", "Minor", "Patch")
operations = (noop, noop, incr, reset, reset)
yield from map(str, (operations[2 - keys.index(key) + offset](int(char)) for offset, char in enumerate(old_version)))

old_version = "321"
new_version = ".".join(increment_version(old_version, "Major"))
print(new_version)

相关内容

  • 没有找到相关文章

最新更新