You need to enable JavaScript to run this app. Python for循环遍历JSON字典无法获取资产对应available_balance的问题
优惠活动
大模型
产品
解决方案
定价
更多

Python for循环遍历JSON字典无法获取资产对应available_balance的问题

核心问题定位
  • 数据来源认知偏差:
    • 你通过bravado接口拿到的是已经解析完成的Python原生元组结构,不需要再手动构造单引号格式的字符串调用json.loads。实际接口返回的外层是元组:索引0为接口业务返回字典,索引1为ResponseAdapter对象。
    • 你手动拼接的pairs字符串完全不符合JSON规范:JSON强制要求所有键、字符串值使用双引号,单引号属于Python自有语法,再加上你混入了元组外层括号、内存地址文本,根本无法通过标准JSON解析器正常加载。就算你修正了单引号的问题,也完全没有必要做这层字符串转字典的操作——接口已经把JSON响应转成了可直接操作的Python对象。
  • 变量名不匹配:代码中你将result字段的值赋值给了Wallet_balance,但后续循环时尝试遍历balance变量,该变量从未定义,运行时会直接触发NameError。
  • 字典遍历逻辑错误:直接对字典做迭代时,拿到的是字典的顶层键(也就是资产代码字符串,比如"BTC"、"EOS"),而非键对应的嵌套资产信息字典。对字符串直接用['available_balance']取值的操作,不符合Python数据类型规则,必然会报错。
修正后的实现代码
# 直接使用接口返回的原生元组结构(无需手动做JSON解析)
# 替换为你实际从bravado客户端拿到的返回值resp
resp = (
    {
        'ext_code': '',
        'result': {
            'BTC': {'available_balance': 0.00087168, 'cum_realised_pnl': 7.288e-05},
            'EOS': {'available_balance': 0, 'cum_realised_pnl': 0}
        }
    },
    "<bravado.requests_client.RequestsResponseAdapter object at 0x000002D6F7FEB808>"
)

# 提取资产列表字典
wallet_balance = resp[0]['result']

# 推荐用items()直接遍历字典的键值对,可读性最高
for asset_code, asset_detail in wallet_balance.items():
    available_balance = asset_detail['available_balance']
    print(f"Asset: {asset_code} Balance: {available_balance}")
运行输出结果
Asset: BTC Balance: 0.00087168
Asset: EOS Balance: 0

补充说明:如果后续需要只遍历非零余额的资产,只需要在循环里加一层判断即可,例如:

for asset_code, asset_detail in wallet_balance.items():
    balance = asset_detail['available_balance']
    if balance > 0:
        print(f"Asset: {asset_code} Balance: {balance}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 13:06:04