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

Python字典赋值时机解析及无计数赋值代码报错排查

两段Python字典操作的KeyError问题解析

第一段代码的字典赋值逻辑

第一段代码实现了CSV中title列的出现次数统计,字典titles的赋值逻辑明确:

  • 遍历CSV每一行,提取并格式化title(去除首尾空格、转为大写)
  • 若title已存在于titles中,就将对应计数加1
  • 若title不存在于字典中(else分支),则为字典新增该键并赋值为1,完成首次计数的初始化
    因此所有出现过的title都会被存入titles字典,不会出现键缺失的情况。

第二段代码的错误原因

第二段代码触发键错误(KeyError),核心问题有两个:

1. 错误的字典键添加方式

在if not title in titles:分支中,代码写的是titles[title]——这行代码不是给字典新增键,而是尝试读取字典中不存在的title键对应的值。Python不允许直接访问字典中不存在的键,因此会立刻抛出KeyError。

如果要实现“仅存储不重复的title”的需求,正确的写法是给键赋予一个占位值(值的类型不影响,只要完成键的添加):

if not title in titles:
    titles[title] = True  # 也可以赋值为0、None等任意值

2. 循环结束后访问title的潜在问题

即使修复了上述问题,最后一行print(titles[title])仍有逻辑隐患:title是循环变量,循环结束后它保存的是CSV最后一行的title值。如果最后一行的title之前已存在于字典中,虽然不会触发KeyError,但这行代码通常不是你想要的结果(你大概率是想打印整个字典或特定键的值,而非依赖循环的最后一个变量)。

内容的提问来源于stack exchange,提问作者Syed Rashid Mujahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:05:23