You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环创建按比例折算的薪资等级字典?

解决薪资字典创建的错误与最优方法

错误原因分析

你代码里的dicts[day] = dicts[salary]是核心问题:这行代码试图从字典中取出键为salary的值赋值给键day,但你的字典初始是空的,不存在salary对应的键,所以触发KeyError。另外,循环一开始就执行day +=1,导致第1天的薪资根本没被加入字典。

修正后的基础代码

先把第1天的薪资写入字典,再循环处理后续天数:

dicts = {}
total_days = 174
day = 1
salary = 1017781

# 先加入第1天的数据
dicts[day] = salary

for _ in range(total_days - 1):
    day += 1
    salary -= 5849
    dicts[day] = salary

# 验证前三个值
print({k: dicts[k] for k in range(1,4)})
# 输出: {1: 1017781, 2: 1011932, 3: 1006082}

最优方法:字典推导式

利用数学公式直接计算每天的薪资,不需要循环累加,代码更简洁高效:
薪资的计算公式为:salary = 初始薪资 - 日递减额 * (天数-1),因为第1天递减0次,第2天递减1次,以此类推。

initial_salary = 1017781
daily_decrease = 5849
total_days = 174

salary_dict = {day: initial_salary - daily_decrease * (day - 1) for day in range(1, total_days + 1)}

# 验证结果
print({k: salary_dict[k] for k in range(1,4)})
# 输出: {1: 1017781, 2: 1011932, 3: 1006082}

这种写法避免了手动维护day和salary的变量状态,可读性和效率都更高,尤其适合这种有明确数学规律的场景。

内容的提问来源于stack exchange,提问作者rand_user_999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:24:14