如何基于字典修改Argparse解析器的默认参数值?
用字典修改Argparse参数默认值的正确方法
你之前的写法问题在于,parser.set_default(key=parameters[key])里的key被当作了固定的参数名,所以才会新增一个叫key的参数,而非修改目标参数。这里有两种靠谱的解决方式:
方式一:字典直接解包(最简洁)
argparse的set_defaults()方法支持直接传入字典进行批量设置,用解包运算符把字典转换成关键字参数即可:
parser.set_defaults(**parameters)
一行代码就能完成所有匹配参数的默认值替换。
方式二:逐个遍历键值对设置
如果需要逐个处理参数,可以遍历字典的键值对,动态生成关键字参数:
for name, value in parameters.items(): parser.set_defaults(**{name: value})
这里通过**{name: value}把每个键值对转换成对应的关键字参数,确保修改的是已存在的Arg0、Arg1参数,不会新增无效参数。
验证效果
修改后可以通过空参数解析来验证默认值是否更新:
args = parser.parse_args([]) print(args.Arg0) # 输出:NewStr print(args.Arg1) # 输出:0
内容的提问来源于stack exchange,提问作者FiReTiTi
相关产品推荐
相关产品推荐

