在python中访问json列表中的嵌套json时出错

2024-06-01 05:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个样本json数据,它是来自POST请求的响应-response是以下样本json数据变量的名称:

{
    "statusCode": "OK",
    "data": [
        {
            "id": -199,
            "result": {
                "title": "test1",
                "group": "test_grp2"
            }
        },
        {
            "id": -201,
            "result": {
                "title": "test2",
                "group": "test_grp2"
            }
        }
    ]
}

现在我要做的是形成一个list of list,其中每个列表都有来自上述json数据的idtitlegroup值。下面是我的代码:

def get_list():
    # code to get the response from POST request

    json_data = json.loads(response.text)
    group_list = []

    if json_data['statusCode'] == 'OK':
        for data in json_data['data']:
            print(data)
            for result_data in data['result']:  
                title = result_data['title']
                group = result_data['group']
            group_list.append([data['id'],title,group])

    return(group_list)

当我执行这个命令时,在第title = result_data['title]行得到的错误是list indices must be int not str。我怎样才能形成上面的列表呢?你知道吗


Tags: 数据testidjsondatatitleresponsegroup
2条回答

您可以使用列表理解直接提取列表列表:

>>> [[d['id'], d['result']['title'], d['result']['group']] for d in json_data['data']]
[[-199, 'test1', 'test_grp2'], [-201, 'test2', 'test_grp2']]

data['result']在您的例子中是一个字典。当您使用for result_data in data['result']对其进行迭代时,会得到键—换句话说,result_data是一个字符串,它不支持字符串索引。你知道吗

相反,你的意思是:

for data in json_data['data']:
    result_data = data['result']

    title = result_data['title']
    group = result_data['group']

或者,您也可以使用list comprehension

group_list = [(data['id'], data['result']['title'], data['result']['group'])
              for data in json_data['data']]
print(group_list)

相关问题 更多 >