You need to enable JavaScript to run this app. 为何使用Python3无法正确提取嵌套JSON中的final_balance值
优惠活动
大模型
产品
解决方案
定价
更多

为何使用Python3无法正确提取嵌套JSON中的final_balance值

报错原因定位
  • 结构层级认知偏差:解析后拿到的最外层字典,键是比特币地址字符串1DyRGJQZZMr9LxRFXHq5AZ4gopqk7pCPZi,final_balance是这个键对应的内层嵌套字典的字段,并不是最外层字典的直接属性,直接写obj['final_balance']必然触发KeyError
  • 类型误用:Python3中字典的.values()方法返回dict_values类型的可迭代对象,并非支持下标索引的字典/列表结构,对其直接用['final_balance']取值,就会触发“不可下标访问”的类型错误
  • 类型不匹配:final_balance返回的是整数类型数值,直接和字符串'$ '做加法拼接,也会触发类型不兼容的报错
修正后可正常运行的代码
import json
import urllib.request

# 下载原始JSON对象
url = "http://blockchain.info/balance?active=1DyRGJQZZMr9LxRFXHq5AZ4gopqk7pCPZi"
data = urllib.request.urlopen(url).read().decode()

# 解析JSON对象
obj = json.loads(data)

# 逐层定位字段:最外层用地址字符串作为键取内层字典,再读取final_balance
target_address = "1DyRGJQZZMr9LxRFXHq5AZ4gopqk7pCPZi"
final_balance = obj[target_address]["final_balance"]

# 接口返回的余额单位为聪(比特币最小单位),除以1e8即可转换为常规BTC单位
print(f'$ {final_balance / 100000000}')

如果不想硬编码地址字符串,也可以直接取出最外层字典的唯一内层值,适配接口“传入单个地址就返回单个键值对”的固定结构:

# 无硬编码的取值方式
inner_detail = next(iter(obj.values()))
final_balance = inner_detail["final_balance"]
补充说明
  • 原始final_balance的数值772038对应772038聪,按单位换算后约为0.00772038 BTC,可根据展示需求决定是否做单位转换
  • 拼接输出时优先使用f-string格式化,避免直接做字符串和数值的加法操作触发类型错误

内容的提问来源于stack exchange,提问作者joe5

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 03:54:05