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

Python嵌套循环更新字典未得到预期输出问题求助

问题分析

  • 内层循环中每次遍历列表元素时都直接覆盖变量x,没有将生成的单键字典收集到列表中,最终每个key对应的value只会保留列表最后一个元素转换后的结果
  • 末尾的out.update(out)是无效操作,字典用自身内容更新自身不会产生任何变化

修正后代码

categories = {'categories_a1' : [{'group': '13GH9', 'number': '1'},{'group': '17KPO', 'number': '73'}, {'group': '26BN11', 'number': '2'}, {'group': '813W', 'number': '99'}],
              'categories_a2' : [{'group': '99ITY', 'number': '12'},{'group': 'JH871', 'number': '15'}, {'group': 'OLH83', 'number': '99'}, {'group': '44RTQ', 'number': '1'}]} 

expected= {'categories_a1' : [{'13GH9': '1'},{'17KPO':'73'}, {'26BN11':'2'}, {'813W': '99'}],
              'categories_a2' : [{'99ITY':'12'},{'JH871': '15'}, {'OLH83': '99'}, {'44RTQ':'1'}]} 

out = {}
for k, v in categories.items():
    # 初始化当前key对应的空列表,收集所有转换后的单键字典
    tmp_list = []
    for item in v:
        tmp_list.append({item['group']: item['number']})
    out[k] = tmp_list

# 验证结果与预期一致
print(out == expected) # 输出True

也可以用推导式写更简洁的版本:

out = {k: [{item['group']: item['number']} for item in v] for k, v in categories.items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:07