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

Python解析含列表的字典触发KeyError的问题排查与解决

Python解析字典列表时KeyError问题的解决

问题说明

解析包含string、number、multipleChoice等多种类型字段的字典列表时,运行遍历代码触发KeyError: 'multipleChoiceValue',报错位置为循环语句for choice2 in fields2['value']['multipleChoiceValue']。排查发现数据中存在一条异常字段:{'value': {}, 'label': 'Room#', 'type': 'multipleChoice'},该字段类型标记为multipleChoice,但value是空字典,不存在multipleChoiceValue键,导致遍历时报错。

待解析数据

[
    {'value': {'stringValue': 'My Name'}, 'label': "Submitter's Name", 'type': 'string'},
    {'value': {'stringValue': 'Shipper name test'}, 'label': 'Shipper Name', 'type': 'string'},
    {'value': {'stringValue': 'Consignee name test'}, 'label': 'Consignee', 'type': 'string'},
    {'value': {'stringValue': '12345'}, 'label': 'Job #', 'type': 'string'},
    {'value': {'numberValue': 67}, 'label': 'Temp', 'type': 'number'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'YES'}, {'selected': False, 'value': 'NO'}]}, 'label': 'Visual Inspection', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'YES'}, {'selected': False, 'value': 'NO'}]}, 'label': 'Water', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'YES'}, {'selected': False, 'value': 'NO'}]}, 'label': 'Feed', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'YES'}, {'selected': False, 'value': 'NO'}]}, 'label': 'Lights', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'YES'}, {'selected': False, 'value': 'NO'}, {'selected': False, 'value': 'Yes, but needs attention'}]}, 'label': 'Bed', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'Vehicle 1'}, {'selected': False, 'value': 'Vehicle 3'}, {'selected': False, 'value': 'Vehicle 3'}, {'selected': False, 'value': 'Vehicle 4'}]}, 'label': 'Truck#', 'type': 'multipleChoice'},
    {'value': {}, 'label': 'Room#', 'type': 'multipleChoice'},
    {'value': {'multipleChoiceValue': [{'selected': True, 'value': 'NO'}, {'selected': False, 'value': 'YES'}]}, 'label': 'Last Submission for Trip?', 'type': 'multipleChoice'}
]

报错代码

for fields in response_data['data']['fields']:
    if fields['label'] == "Last Submission for Trip?":
        for choice in fields['value']['multipleChoiceValue']:
            if choice['value'] == "NO":
                if choice['selected'] == True:
                    for fields2 in response_data['data']['fields']:
                        if fields2['type'] == 'multipleChoice':
                           for choice2 in fields2['value']['multipleChoiceValue']:
                              print('selected')
                              print('value')

解决方法

在判断字段类型为multipleChoice的条件中,增加对value是否为空字典的校验,过滤掉空值字段。修改后的判断条件为:

if fields2['type'] == 'multipleChoice' and fields2['value'] != {}:

修改后的完整代码示例:

for fields in response_data['data']['fields']:
    if fields['label'] == "Last Submission for Trip?":
        for choice in fields['value']['multipleChoiceValue']:
            if choice['value'] == "NO" and choice['selected'] == True:
                for fields2 in response_data['data']['fields']:
                    if fields2['type'] == 'multipleChoice' and fields2['value'] != {}:
                        for choice2 in fields2['value']['multipleChoiceValue']:
                            print('selected')
                            print('value')

内容的提问来源于stack exchange,提问作者C. Ayers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:54:52