Python嵌套结构取值:如何访问字典内列表中字典的'c'字段值
报错根因
触发类型错误的核心原因是对接口返回字段的类型判断失误:
从接口返回的JSON结构可以看到,results字段是列表(数组)类型,不是字典类型。Python中列表仅支持整数/切片索引,不支持直接传入字符串key取值,因此编写crypto_data['results']['c']时会直接抛出类型错误。
修复方案
results列表的第一个元素(索引值为0)才是存储K线行情数据的字典,按层级依次索引即可拿到目标收盘价,将报错的打印语句替换为以下代码即可正常运行:
print(f"The previous price of {coin} is {crypto_data['results'][0]['c']}")
优化建议
- 实际使用时建议增加容错判断,先校验
results列表是否非空再取值,避免接口异常返回空数据时触发索引越界错误,参考写法:
if crypto_data.get("totalResults", 0) > 0 and len(crypto_data.get("results", [])) > 0: prev_close = crypto_data['results'][0]['c'] print(f"The previous price of {coin} is {prev_close}") else: print(f"获取{coin}前一日收盘价失败")
- 调试接口返回数据时,可以先用
type()函数打印目标字段的类型,确认是列表还是字典后再编写索引逻辑,能规避绝大多数同类取值错误。
内容的提问来源于stack exchange,提问作者Kenneth Lott
相关产品推荐
相关产品推荐

