Python字典值替换为百分比格式失败,求正确实现方案
修正Python字典值转百分比的代码问题
错误代码示例(你可能的写法)
大概率你写了类似这样的嵌套循环,导致所有值被重复覆盖:
job_role_overtime_att_rate = {'开发': 0.12, '测试': 0.08, '运维': 0.15} # 错误的嵌套循环 for role in job_role_overtime_att_rate: for rate in job_role_overtime_att_rate.values(): job_role_overtime_att_rate[role] = rate * 100 print(job_role_overtime_att_rate) # 错误输出: {'开发': 15.0, '测试': 15.0, '运维': 15.0}
正确实现方式
方法1:遍历字典键直接更新
job_role_overtime_att_rate = {'开发': 0.12, '测试': 0.08, '运维': 0.15} # 单层循环遍历每个岗位,更新对应加班率为百分比 for role in job_role_overtime_att_rate: job_role_overtime_att_rate[role] *= 100 print(job_role_overtime_att_rate) # 输出: {'开发': 12.0, '测试': 8.0, '运维': 15.0}
方法2:使用字典推导式(简洁生成)
如果想要更简洁的写法,或者生成新字典不修改原数据:
job_role_overtime_att_rate = {'开发': 0.12, '测试': 0.08, '运维': 0.15} # 推导式生成百分比字典,可直接赋值给原变量覆盖 job_role_overtime_att_rate = {role: rate * 100 for role, rate in job_role_overtime_att_rate.items()} print(job_role_overtime_att_rate)
方法3:遍历键值对更新
job_role_overtime_att_rate = {'开发': 0.12, '测试': 0.08, '运维': 0.15} for role, rate in job_role_overtime_att_rate.items(): job_role_overtime_att_rate[role] = rate * 100 print(job_role_overtime_att_rate)
错误原因
嵌套循环会让每个岗位的加班率被反复替换,最终所有岗位的值都会被设置为字典最后一个值的百分比,所以出现重复错误结果。只需要单层循环遍历键或键值对,就能逐个更新对应的值。
内容的提问来源于stack exchange,提问作者user10289706
相关产品推荐
相关产品推荐

