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

Python嵌套循环问题:list_dic_gen函数实现错误排查与修正

Python函数list_dic_gen实现错误修复

需求说明

  • 函数list_dic_gen接收两个参数:
    1. 第一个参数是字符串类型元素组成的列表;
    2. 第二个参数是嵌套列表,每个内层列表的长度和第一个参数的列表长度一致。
  • 函数返回字典组成的列表:每个字典的key来自第一个参数的列表,value来自第二个参数对应的内层列表,key和value按索引一一对应;字典列表的顺序要和第二个参数的内层列表顺序一致,必须在遍历第二个参数的for循环内创建空字典。

问题代码

def list_dic_gen(lst,lol):
  acc=[]
  accd={}
  a=0
  for l in lol:
    for o in l:
      accd[lst[a]]=l[a]
      acc.append(accd)
      a+=1
    return acc

问题现象

调用list_dic_gen(['One','Two'], [['First','Second']])时,返回结果是[{'One': 'First', 'Two': 'Second'}, {'One': 'First', 'Two': 'Second'}],但预期结果是[{'One': 'First', 'Two': 'Second'}],而且代码无法同时兼容单一内层列表和多个内层列表的场景。

错误原因&修复方案

错误点分析

  1. 字典accd在循环外创建,每次循环只是修改同一个字典的内容,多次append的都是同一个字典的引用;
  2. 内层循环遍历每个元素时都执行append,导致一个内层列表会生成多个重复字典;
  3. return acc写在了外层循环的第一次迭代里,函数会直接返回,无法处理多个内层列表的情况;
  4. 索引变量a的全局计数会导致多个内层列表处理时索引混乱。

正确实现

def list_dic_gen(lst, lol):
    result = []
    for inner_list in lol:
        # 严格遵循要求:在外层循环内创建空字典
        current_dict = {}
        # 按索引配对key和value
        for idx in range(len(lst)):
            current_dict[lst[idx]] = inner_list[idx]
        # 也可以用zip简化写法:current_dict = dict(zip(lst, inner_list))
        result.append(current_dict)
    return result

验证测试

  • 测试单一内层列表:
    print(list_dic_gen(['One','Two'], [['First','Second']]))
    # 输出:[{'One': 'First', 'Two': 'Second'}]
    
  • 测试多个内层列表:
    print(list_dic_gen(['Name','Age'], [['Alice',25], ['Bob',30]]))
    # 输出:[{'Name': 'Alice', 'Age': 25}, {'Name': 'Bob', 'Age': 30}]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:31:06