如何查询币安保证金账户的唯一交易品种余额?

问题描述

我目前能够使用python-binance v0.7.5中的以下代码成功查询我的保证金帐户:

client.get_margin_account()

它将返回以下保证金余额列表和信息列表,该列表列出了交易所中从最高余额到最低余额的所有交易品种:

  {'TradeEnabled': True,'transferEnabled': True,'borrowEnabled': True,'marginLevel': '999.00000000','totalAssetofBtc': '0.00000000','totalLiabilityOfBtc': '0.00000000','totalNetAssetofBtc': '0.00000000','userAssets': [{'asset': 'BTC','free': '0.00000000','locked': '0.00000000','borrowed': '0.00000000','interest': '0.00000000','netAsset': '0.00000000'},{'asset': 'ETH','netAsset': '0.00000000'}]}

我可以按以下方式查询特定资产:

client.get_margin_account()['userAssets'][0]['free']

但是当我使用此代码时:

client.get_margin_account()['userAssets']['btc']['free']

我收到此错误

TypeError: list indices must be integers or slices,not str

如何在不指定索引位置的情况下查询帐户中的特定符号?

解决方法

选项1:使用next()

data = {'tradeEnabled': True,'transferEnabled': True,'borrowEnabled': True,'marginLevel': '999.00000000','totalAssetOfBtc': '0.00000000','totalLiabilityOfBtc': '0.00000000','totalNetAssetOfBtc': '0.00000000','userAssets': [{'asset': 'BTC','free': '0.00000000','locked': '0.00000000','borrowed': '0.00000000','interest': '0.00000000','netAsset': '0.00000000'},{'asset': 'ETH','netAsset': '0.00000000'}]}


print( next(d for d in data['userAssets'] if d['asset'] == 'BTC')['free'] )

选项2:将userAssets转换为字典:

ua = {d['asset']: d for d in data['userAssets']}
print(ua['BTC']['free'])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...