Python如何按指定比例对字典存储的数值参数进行增量调整
解决方案
你只需要补全最后一行的10%增量计算逻辑即可,有多种实现方式可选:
写法1:适配你现有+=语法的实现
上调10%等价于在原值基础上加上原值的0.1倍,直接补全计算逻辑即可:
policy_params_new = copy.deepcopy(policy_params) for n in policy_params_new["ub_2"]["rs"]: policy_params_new["ub_2"]["rs"][n] += policy_params_new["ub_2"]["rs"][n] * 0.1
如果要求调整后的值为整数,可以额外增加取整逻辑,比如四舍五入:
policy_params_new["ub_2"]["rs"][n] += round(policy_params_new["ub_2"]["rs"][n] * 0.1)
写法2:更简洁的等价实现
上调10%也等价于原值直接乘以1.1,可以简化写法:
policy_params_new = copy.deepcopy(policy_params) for n in policy_params_new["ub_2"]["rs"]: policy_params_new["ub_2"]["rs"][n] = round(policy_params_new["ub_2"]["rs"][n] * 1.1)
写法3:字典推导式实现
还可以用字典推导式替代for循环,代码更简洁:
policy_params_new = copy.deepcopy(policy_params) policy_params_new["ub_2"]["rs"] = {k: round(v*1.1) for k, v in policy_params_new["ub_2"]["rs"].items()}
内容的提问来源于stack exchange,提问作者ddocc
相关产品推荐
相关产品推荐

