Python报错TypeError: string indices must be integers的原因排查
解决TypeError: string indices must be integers(字典推导式遍历JSON字典出错)
问题场景
读取标注JSON文件后,执行以下字典推导式时触发错误:
{i['path']: i for i in json_data}
错误信息:
TypeError: string indices must be integers
该JSON数据结构为包含info、categories、items字段的字典,其中items是存储图片标注信息的列表。
错误原因
直接遍历json_data(字典类型)时,循环变量i实际上是字典的键名(字符串类型),比如'info'、'categories'、'items'。字符串只能用整数索引(如i[0]),无法通过i['path']访问字典字段,因此触发错误。
解决方案
需要遍历JSON字典中的items列表(而非整个字典),因为图片标注信息都存在这个列表里。正确的字典推导式如下:
{item['path']: item for item in json_data['items']}
这样循环变量item就是items列表中的每个标注字典对象,自然可以通过item['path']获取路径字段,生成以路径为键、标注对象为值的字典。
内容的提问来源于stack exchange,提问作者Asifuzzaman Jishan
相关产品推荐
相关产品推荐

