如何用Python根据条件从JSON响应中提取指定id值?
问题分析与修复
你的代码存在核心逻辑错误,导致无法正确提取目标值,以下是问题说明和修复方案:
错误点
- 循环操作对象错误:遍历
list_of_pagp列表时,i是当前迭代的字典元素,但你却试图访问整个列表的channelGroupId键,这会触发TypeError(列表不支持字典的键访问方式)。 - ID提取方式错误:找到目标项后,你错误地操作列表而非当前字典元素,且
id未加引号(会被当成变量而非字典键),正确方式是从当前字典中提取'id'对应的值。 - 额外隐患:
"success" in response.text的判断逻辑不可靠,接口返回的成功提示是"Get operation is successful",若接口返回格式变化,这个判断可能失效,建议直接用返回的statusCode判断。
修正后的代码
if response.status_code == 200: full_response = response.json() # 用statusCode判断请求成功更可靠 if full_response['status']['statusCode'] == 0: list_of_pagp = full_response['items'] instanceId = None for item in list_of_pagp: if item['channelGroupId'] == 26: instanceId = item['id'] break if instanceId is not None: print(instanceId) else: print("未找到channelGroupId为26的项")
代码说明
- 替换成功判断逻辑,改用响应内的
statusCode,避免字符串匹配的不确定性。 - 遍历列表时用
item指代当前字典元素,正确访问其channelGroupId键。 - 找到目标项后,从当前字典中提取
'id'对应的值。 - 增加未找到目标项的处理逻辑,避免
instanceId未定义导致的报错。
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

