我在下面有数据列表。我正在尝试从数据中提取“ bid_price”。
current = requests.get("https://www.deribit.com/api/v2/public/get_book_summary_by_instrument?instrument_name=BTC-PERPETUAL").json()
使用打印(当前),我收到此数据
{
'jsonrpc':'2.0',
'result':[
{
'volume_usd':566908519.99,
'volume':79073.94,
'quote_currency':'USD',
'open_interest':48034981,
'mid_price':7059.63,
'mark_price':7060.06,
'low':6686.25,
'last':7057.75,
'instrument_name':'BTC-PERPETUAL',
'high':7581.75,
'funding_8h':1.576e-05,
'estimated_delivery_price':7057.61,
'current_funding':0.0,
'creation_timestamp':1557711700003,
'bid_price':7059.5,
'base_currency':'BTC',
'ask_price':7059.75
}
],
'usIn':1557711700003222,
'usOut':1557711700003412,
'usDiff':190,
'testnet':False
}
我尝试使用“ xbt_bid_price = current ['result'] ['bid_price']”-抛出“ TypeError:列表索引必须是整数或切片,而不是str”。我不确定如何具体访问“ bid_price”值。看来这应该很容易做到,但是由于某种原因,我似乎无法弄清楚这一点。
FWIW,我也尝试过“ xbt_bid_price =(current.get [0] 0)”-也会失败。
编辑: 问题已解决,提供的所有答案均有效-谢谢!需要的命令是:xbt_bid_price = current ['result'] [0] ['bid_price']
答案 0 :(得分:0)
执行current['result']['bid_price']
时,将为列表bid_price
提供索引current[result]
,这会导致错误TypeError: list indices must be integers or slices, not str".
因此,您需要使用列表索引来遍历列表,以获取数据。
current = {
'jsonrpc':'2.0',
'result':[
{
'volume_usd':566908519.99,
'volume':79073.94,
'quote_currency':'USD',
'open_interest':48034981,
'mid_price':7059.63,
'mark_price':7060.06,
'low':6686.25,
'last':7057.75,
'instrument_name':'BTC-PERPETUAL',
'high':7581.75,
'funding_8h':1.576e-05,
'estimated_delivery_price':7057.61,
'current_funding':0.0,
'creation_timestamp':1557711700003,
'bid_price':7059.5,
'base_currency':'BTC',
'ask_price':7059.75
}
],
'usIn':1557711700003222,
'usOut':1557711700003412,
'usDiff':190,
'testnet':False
}
#Iterate over the list result
for li in current['result']:
#Get the bid price
print(li.get('bid_price'))
输出将为
7059.5
答案 1 :(得分:0)
问题在于current ['result']是一个列表,您需要使用键在字典中获取值之前,需要访问第一个元素(即字典)。
尝试:
import requests
current = requests.get("https://www.deribit.com/api/v2/public/get_book_summary_by_instrument?instrument_name=BTC-PERPETUAL").json()
bt_bid_price = current['result'][0]['bid_price']
print(bt_bid_price)
答案 2 :(得分:0)
尝试一下:
您的数据:
current = {
'jsonrpc':'2.0',
'result':[
{
'volume_usd':566908519.99,
'volume':79073.94,
'quote_currency':'USD',
'open_interest':48034981,
'mid_price':7059.63,
'mark_price':7060.06,
'low':6686.25,
'last':7057.75,
'instrument_name':'BTC-PERPETUAL',
'high':7581.75,
'funding_8h':1.576e-05,
'estimated_delivery_price':7057.61,
'current_funding':0.0,
'creation_timestamp':1557711700003,
'bid_price':7059.5,
'base_currency':'BTC',
'ask_price':7059.75
}
],
'usIn':1557711700003222,
'usOut':1557711700003412,
'usDiff':190,
'testnet':False
}
在这里您可以获取出价
v = current['result'][0]['bid_price']
print(v)
输出
7059.5
答案 3 :(得分:0)
current [“ result”]给出一个列表,其中包含一项(字典),因为括号前有方括号。
请尝试以下操作以获取出价。 xbt_bid_price = current [“ result”] [0] [“ bid_price”]