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

Python按指定特征移除字典键值对代码未生效问题排查

问题排查与修复

你的代码存在几个关键错误,导致删除逻辑完全失效:

1. 循环变量名与函数参数重名

函数参数定义了valeur_caracteristique(要匹配的特征值),但循环里又用了同名变量for name, valeur_caracteristique in personnages_copy.items(),这直接覆盖了传入的参数值——此时valeur_caracteristique变成了遍历到的人物字典,而非你传入的'femme'。后续判断条件valeur_caracteristique[type_caracteristique] == valeur_caracteristique相当于拿人物的特征值和人物字典本身比较,永远不可能相等,自然不会执行删除操作。

2. return语句缩进错误

当前代码的return personnages_restants在函数外部,属于全局代码块,函数执行完根本不会返回任何值(虽然这里函数直接修改原字典,但语法上属于错误)。

修复后的代码

personnages_restants = {'Bernard': {'genre': 'homme', 'accessoires': ['chapeau']},
               'Claire': {'genre': 'femme', 'accessoires': ['chapeau']},
               'Eric': {'genre': 'homme', 'accessoires': ['chapeau']},
               'George': {'genre': 'homme', 'accessoires': ['chapeau']},
               'Maria': {'genre': 'femme', 'accessoires': ['chapeau']}}

def fn_1(personnages_restants, type_caracteristique, valeur_caracteristique):
    # 遍历拷贝后的字典,避免遍历原字典时修改导致的异常
    for name, chara_info in personnages_restants.copy().items():
        if chara_info[type_caracteristique] == valeur_caracteristique:
            del personnages_restants[name]
    return personnages_restants

print(fn_1(personnages_restants, 'genre', 'femme'))

修复说明

  • 把循环变量改为chara_info,避免覆盖传入的特征值参数
  • 将return语句缩进至函数内部,保证函数正常返回结果
  • 直接遍历原字典的拷贝,避免遍历过程中修改原字典引发的迭代异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:10:38