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

Python计算字典值len/min/sum时for循环仅返回单值原因

第一种for循环写法的错误原因

你写的循环逻辑问题出在变量赋值的位置和方式:
循环内部每次执行时,都会给stat变量重新赋值一个只包含当前遍历键的全新字典,而不是在已有字典的基础上新增键值对。整个循环的执行过程是:

  1. 遍历到Monday时,stat被赋值为{"Monday": [4, 19, 87]}
  2. 遍历到Tuesday时,stat直接被覆盖为{"Tuesday": [4, 12, 62]},之前存的Monday数据被完全清空
  3. 后续每一次循环都会重复覆盖操作,上一轮存的内容全部丢失
  4. 循环最后遍历到的键是Sunday,所以最终stat里就只剩Sunday对应的单条数据。
两种实现方式的核心差异
  • 手动写for循环的正确逻辑:必须在循环外部先初始化一个空字典,循环过程中只做「给已有字典新增键值对」的操作,而不是每次重新给字典变量整体赋值,修正后的代码如下:
# 先在循环外创建空字典,这步不能放到循环里
stat = {}
for k, v in scores.items():
    # 往已有的stat字典里追加当前键值对,不会覆盖之前的内容
    stat[k] = [len(v), min(v), sum(v)]
  • 字典推导式的逻辑:你用的推导式写法是Python内置的语法糖,它会自动完成「初始化空字典、遍历所有元素、逐个追加键值对、返回最终完整字典」的全流程,不需要你手动写初始化和追加的步骤,天然不会出现覆盖问题,写法也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:57:25