希望从字典中的列表中获取特定的值

时间:2019-05-13 02:14:56

标签: python

我在下面有数据列表。我正在尝试从数据中提取“ 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']

4 个答案:

答案 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)

输出: enter image description here

答案 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”]