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

Python两个dict的元素除法为何返回int而非预期的float

问题根因

当前代码返回整数结果的核心原因是使用了地板除运算符//,而非浮点除法运算符:

  • // 是Python的向下取整除法,两个整数执行该运算时会直接截断小数部分,返回纯整数结果,示例中20//7、24//7、30//7的运算结果就分别对应你输出里的2、3、4
  • / 是Python3的标准浮点除法,运算结果始终返回浮点数类型,和操作数是否为整数无关
修正实现

将字典推导式里的//替换为/即可得到预期的浮点结果,同时建议调整字典取值的默认值避免除以0报错:

test_dict1 = {'gfg': 20, 'is': 24, 'best': 30}
test_dict2 = {'gfg': 7, 'is': 7, 'best': 7}

# 替换//为/,同时将get方法的默认值从0调整为1,避免缺失key时触发除零错误
res = {key: test_dict1[key] / test_dict2.get(key, 1)
       for key in test_dict1.keys()}

# 运行结果为浮点类型字典:{'gfg': 2.857142857142857, 'is': 3.4285714285714284, 'best': 4.285714285714286}

补充说明:如果需要控制浮点数的保留精度,可以在除法运算后套用round()方法做截断处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 19:27:03