-1

我是 python 新手,但自学了创建 crypto.com 交易机器人并让它工作。我以前从未编写过代码,所以这是非常有趣的经历 :)

但是,我遇到的一个问题是如何从 requests.post json 响应中找到某个字符串并使用它仅打印该行的数据?目前我这样做是这样的:

balance = requests.post(url=URL + "/v1/account", data=params, json=json)


this is what I get:

 {'code': '0', 'msg': 'suc', 'data': {'total_asset': '0', 'coin_list': [{'normal': '0.000000000000000000', 'locked': '0.000000000000000000', 'coin': 'ENJ'}, {'normal': '1506.701942200000000000', 'locked': '0.000000000000000000', 'coin': 'CRO'}, {'normal': '0', 'locked': '0', 'coin': 'KNC'}, {'normal': '0', 'locked': '0', 'coin': 'VET'}, {'normal': '0.000059800000000000', 'locked': '0.000000000000000000', 'coin': 'PAXG'}, {'normal': '0.000096800000000000', 'locked': '0.000000000000000000', 'coin': 'USDT'}, {'normal': '0', 'locked': '0', 'coin': 'ALGO'}, {'normal': '0', 'locked': '0', 'coin': 'ATOM'}, {'normal': '0', 'locked': '0', 'coin': 'XRP'}, {'normal': '0', 'locked': '0', 'coin': 'XLM'}, {'normal': '0', 'locked': '0', 'coin': 'LINK'}, {'normal': '0', 'locked': '0', 'coin': 'XTZ'}, {'normal': '0', 'locked': '0', 'coin': 'BCH'}, {'normal': '0', 'locked': '0', 'coin': 'EOS'}, {'normal': '0', 'locked': '0', 'coin': 'DAI'}, {'normal': '0.000000000000000000', 'locked': '0', 'coin': 'BTC'}, {'normal': '0.003788320000000000', 'locked': '0.000000000000000000', 'coin': 'BAT'}, {'normal': '0', 'locked': '0', 'coin': 'ETC'}, {'normal': '0.014441820000000000', 'locked': '0.000000000000000000', 'coin': 'ETH'}, {'normal': '0', 'locked': '0', 'coin': 'MCO'}, {'normal': '0.004229970000000000', 'locked': '0.000000000000000000', 'coin': 'NEO'}, {'normal': '0', 'locked': '0', 'coin': 'LTC'}, {'normal': '0', 'locked': '0', 'coin': 'USDC'}, {'normal': '0', 'locked': '0', 'coin': 'ADA'}, {'normal': '0', 'locked': '0', 'coin': 'ICX'}]}}


Then I get coins that I want to trade like this:

balance1 = balance.json()
balance2 = balance1.get('data')
balance3 = balance2.get('coin_list')
balanceCRO = balance3[1]
balanceETH = balance3[19]
CROopen = balanceCRO.get('normal')
CROlocked = balanceCRO.get('locked')
ETHopen = balanceETH.get('normal')
ETHlocked = balanceETH.get('locked')

这按我想要的方式工作,但是当他们添加新币时,CRO 和 ETH 的位置会发生变化,所以我必须每次手动将 balance[1]、balance[19] 更改为相应的数字。

有没有办法从响应列表中找到某些字符串(在本例中为 CRO 和 ETH)并使用它从中获取值?

对不起,如果我解释得不好,我还在学习:)提前谢谢!

4

1 回答 1

-1

这是一种不受添加或删除影响的数据排序方式:

response = {'code': '0', 'msg': 'suc', 'data': {'total_asset': '0', 'coin_list': [{'normal': '0.000000000000000000', 'locked': '0.000000000000000000', 'coin': 'ENJ'}, {'normal': '1506.701942200000000000', 'locked': '0.000000000000000000', 'coin': 'CRO'}, {'normal': '0', 'locked': '0', 'coin': 'KNC'}, {'normal': '0', 'locked': '0', 'coin': 'VET'}, {'normal': '0.000059800000000000', 'locked': '0.000000000000000000', 'coin': 'PAXG'}, {'normal': '0.000096800000000000', 'locked': '0.000000000000000000', 'coin': 'USDT'}, {'normal': '0', 'locked': '0', 'coin': 'ALGO'}, {'normal': '0', 'locked': '0', 'coin': 'ATOM'}, {'normal': '0', 'locked': '0', 'coin': 'XRP'}, {'normal': '0', 'locked': '0', 'coin': 'XLM'}, {'normal': '0', 'locked': '0', 'coin': 'LINK'}, {'normal': '0', 'locked': '0', 'coin': 'XTZ'}, {'normal': '0', 'locked': '0', 'coin': 'BCH'}, {'normal': '0', 'locked': '0', 'coin': 'EOS'}, {'normal': '0', 'locked': '0', 'coin': 'DAI'}, {'normal': '0.000000000000000000', 'locked': '0', 'coin': 'BTC'}, {'normal': '0.003788320000000000', 'locked': '0.000000000000000000', 'coin': 'BAT'}, {'normal': '0', 'locked': '0', 'coin': 'ETC'}, {'normal': '0.014441820000000000', 'locked': '0.000000000000000000', 'coin': 'ETH'}, {'normal': '0', 'locked': '0', 'coin': 'MCO'}, {'normal': '0.004229970000000000', 'locked': '0.000000000000000000', 'coin': 'NEO'}, {'normal': '0', 'locked': '0', 'coin': 'LTC'}, {'normal': '0', 'locked': '0', 'coin': 'USDC'}, {'normal': '0', 'locked': '0', 'coin': 'ADA'}, {'normal': '0', 'locked': '0', 'coin': 'ICX'}]}}
data = response["data"]
coins = data["coin_list"]
coins_dict = {}
for coin in coins:
    coins_dict[coin["coin"]] = coin
    
print(coins_dict["CRO"])

这输出:

{'normal': '1506.701942200000000000',
 'locked': '0.000000000000000000',
 'coin': 'CRO'}

我相信这是balanceCRO您原始代码中的代表。

于 2020-08-21T13:10:51.113 回答