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

Python字典推导式输出存疑:为何值v为2而非预期的1?

字典推导式输出结果解惑

你的代码:

dict={k:v for k in range(1,4)  for v in range(1,3) }
print(dict)

实际输出:

{1: 2, 2: 2, 3: 2}

你预期输出是{1: 1, 2: 1, 3: 1},疑惑为什么v的取值是2?

原因拆解

这是因为你的字典推导式里的两个for是嵌套执行的,外层遍历k,内层遍历v,每个k会被内层的所有v依次赋值,最后只保留最后一次的赋值结果。

具体执行过程:

  • 当k=1时,先给k=1赋值v=1,字典变成{1:1};接着再赋值v=2,字典更新为{1:2}
  • 当k=2时,先赋值v=1,字典变为{1:2, 2:1};再赋值v=2,更新为{1:2, 2:2}
  • 当k=3时,先赋值v=1,字典变为{1:2, 2:2, 3:1};再赋值v=2,最终变成{1:2, 2:2, 3:2}

所以每个k最后对应的都是内层循环的最后一个v值——2。

得到预期输出的写法

如果想要每个k对应v=1,直接去掉内层的for循环,固定v的值即可:

dict={k:1 for k in range(1,4)}
print(dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:20:28