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

访问列表中嵌套字典的子键:解决TypeError并生成指定列表

问题分析与解决

错误原因

你触发的TypeError: string indices must be integers,本质是遍历myList时,某个元素的keyA对应的值不是字典,而是字符串。虽然你单独访问myList[0]["keyA"]["key1"]正常,但列表里可能存在其他元素,其keyA是字符串类型,这时候用['key1']去索引字符串就会报错(字符串只能用整数索引位置)。

另外,你的代码里取的是keyA['key1'],但需求是要valueA2_*(对应keyA['key2']),这也是需求与代码不匹配的问题。

正确代码

如果myList所有元素的结构都和你给出的示例一致(keyA都是嵌套字典),直接用下面的列表推导式就能得到目标结果:

outputlist = [f"{x['keyA']['key2']} - {x['keyB']}" for x in myList]

或者用传统字符串拼接:

outputlist = [x['keyA']['key2'] + " - " + x['keyB'] for x in myList]

容错处理(避免报错)

如果不确定myList里所有元素格式都合规,可以添加类型判断,跳过无效元素并提示:

outputlist = []
for item in myList:
    keyA_data = item.get('keyA')
    # 检查keyA是字典,且包含key2,同时元素有keyB
    if isinstance(keyA_data, dict) and 'key2' in keyA_data and 'keyB' in item:
        outputlist.append(f"{keyA_data['key2']} - {item['keyB']}")
    else:
        print(f"无效元素,已跳过:{item}")

排查问题元素

可以先遍历myList,找出格式异常的元素:

for index, item in enumerate(myList):
    if not isinstance(item.get('keyA'), dict):
        print(f"第{index}个元素的keyA不是字典:{item['keyA']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:05:20