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

为何for循环执行两次?list_dic_gen函数输出不符合预期排查

问题分析与解决

问题原因

你的代码在第一个示例中生成两个重复字典的核心原因是**acc.append(accd)放在了内层循环里**:

  • 第一个示例中,外层for x in lol仅执行1次(lol只有1个列表元素),但内层for b in x会遍历['First','Second'],执行2次循环。
  • 每次内层循环都会触发acc.append(accd),第一次append时accd是{'One': 'First'},第二次append时accd已被更新为{'One': 'First', 'Two': 'Second'}——由于两次append的是同一个字典对象的引用,最终acc里的两个元素指向同一个字典,表现为两个重复的内容。

修复后的代码

把acc.append(accd)移到内层循环之外,确保每个子列表处理完成后只向结果列表添加一次字典:

def list_dic_gen(lst, lol):
    acc = []
    a = 0
    for x in lol:
        accd = {}
        for b in x:
            accd[lst[a]] = b
            if len(lst) > 1:
                a += 1
        acc.append(accd)  # 调整到内层循环外部
    return acc

验证结果

  • 调用list_dic_gen(['One','Two'], [['First','Second']]),返回[{'One': 'First', 'Two': 'Second'}],符合预期。
  • 调用list_dic_gen(['Second'], [['One'],['Third Fourth']]),返回[{'Second': 'One'}, {'Second': 'Third Fourth'}],依然正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:40:47