Python批量提取JSON数组元素pk值及TypeError报错解决
报错原因
你触发TypeError: the JSON object must be str, bytes or bytearray, not dict的原因非常明确:results变量已经是完成解析的Python字典对象了,不需要再调用json.loads()做解析。json.loads()仅用于把JSON格式的字符串、字节内容转换为Python原生的字典/列表结构,给它传入已经解析好的字典,必然会报类型错误。
正确实现方案
直接使用Python列表推导式遍历users数组提取所有pk值即可,不需要提前知道数组长度,不管数组里有几个、几百个元素都能一次性批量提取,对应你熟悉的R语言批量取字段的效果:
# 移除多余的json.loads调用,直接操作已解析的results字典 ids = [user['pk'] for user in results['users']] print(ids)
针对你给出的示例数据,运行后输出结果为:
[54297756964, 182625349, 7324707263]
补充说明
- 列表推导式会自动遍历
results['users']下的所有元素,不需要手动写索引、不需要提前统计数组总长度 - 如果实际数据里可能存在缺失
pk字段的异常用户对象,可以加判断做容错,避免运行中断:
# 容错版本:自动跳过缺失pk字段的用户项 ids = [user['pk'] for user in results['users'] if 'pk' in user]
内容的提问来源于stack exchange,提问作者wizkids121
相关产品推荐
相关产品推荐

