Python删除字典键时出现KeyError: 'Not Found'报错如何解决
问题排查与解决
报错根因
你代码里的result是color对应的值black,而cars字典的键是brand、model、year、color,不存在名为black的键,因此执行del cars[result]时直接抛出KeyError。
现有代码的其他问题
- 循环逻辑冗余:遍历
cars_copy的键时完全没有用到循环变量x,每次循环都会重复读取color的值、尝试执行删除操作 - 逻辑目标不匹配:你要删除
color对应的键值对,操作对象应该是color这个键,而非键对应的值
正确实现
方案1:直接删除指定键(无需遍历)
如果明确要删除color键,直接调用pop方法即可,不存在对应键时也不会报错:
cars = { "brand": "Tesla", "model": "Model S Plaid", "year": 2021, "color": "black" } # 第二个参数为默认值,键不存在时不会抛出异常 cars.pop("color", None) print(cars)
方案2:遍历判断删除(适用于多条件筛选删除场景)
如果需要通过遍历筛选符合条件的键再删除,可以直接遍历原字典键的列表副本,避免遍历过程中修改原字典导致的异常:
cars = { "brand": "Tesla", "model": "Model S Plaid", "year": 2021, "color": "black" } for key in list(cars.keys()): # 可自定义删除条件,比如这里判断键为color就删除 if key == "color": del cars[key] print(cars)
内容的提问来源于stack exchange,提问作者Code with Tony
相关产品推荐
相关产品推荐

