我目前能够使用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',
'free': '0.00000000',
'locked': '0.00000000',
'borrowed': '0.00000000',
'interest': '0.00000000',
'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
如何在不指定索引位置的情况下查询帐户中的特定符号?
答案 0 :(得分:0)
选项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',
'free': '0.00000000',
'locked': '0.00000000',
'borrowed': '0.00000000',
'interest': '0.00000000',
'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'])