Python将列表转换为同默认键字典时索引越界问题解决
报错原因
- 索引越界的核心问题是初始化结构时,
jobs对应的列表里只放了1个空字典:{'jobs':[{}]},此时dict['jobs']的长度为1,但循环会遍历range(3)取0、1、2三个索引,访问到索引1时就超出了列表现有长度,直接触发报错。 - 你写的目标字典结构存在语法错误,列表内的单个字典不需要额外套一层中括号,合法的目标结构应为
{'jobs': [{'id':'a'}, {'id':'b'}, {'id':'c'}]}。 - 代码里还有一处笔误:循环内取列表值写的是
list[key],但list是Python内置类型名,你的实际列表变量名是lst。 - 额外提醒:不要用
dict作为自定义变量名,会覆盖Python内置的字典类型,容易引发后续未知报错。
正确实现方法
最简洁的写法是直接用列表推导式生成目标结构,不需要提前初始化空位:
lst = ['a', 'b', 'c'] result = {'jobs': [{'id': item} for item in lst]} print(result)
运行输出:
{'jobs': [{'id': 'a'}, {'id': 'b'}, {'id': 'c'}]}
如果习惯用显式循环写法,可以每次迭代时往列表里追加新字典:
lst = ['a', 'b', 'c'] result = {'jobs': []} for item in lst: result['jobs'].append({'id': item}) print(result)
内容的提问来源于stack exchange,提问作者Enrico Giai
相关产品推荐
相关产品推荐

