[英]Python - Extract specific items from nested dictionary
做一個小項目,我可能會不知所措。 使用 CoinMarketCap API,我試圖了解如何解析他們的結果以提取返回值的特定部分。
舉個例子:
result = {'status': {'timestamp': '2021-02-22T00:04:51.978Z', 'error_code': 0, 'error_message': None, 'elapsed': 46, 'credit_count': 1, 'notice': None}, 'data': {'1INCH': {'id': 8104, 'name': '1inch', 'symbol': '1INCH', 'slug': '1inch', 'cmc_rank': 83, 'last_updated': '2021-02-22T00:03:09.000Z', 'quote': {'BTC': {'price': 8.793673178965842e-05, 'volume_24h': 4010.9008604493424, 'percent_change_1h': 1.77689058, 'percent_change_24h': -3.76351861, 'percent_change_7d': -19.9798068, 'percent_change_30d': 66.4333541, 'market_cap': 12615.667000751586, 'last_updated': '2021-02-22T00:03:02.000Z'}}}}}
我無法弄清楚如何從這個變量中提取“symbol”、“cmc_rank”和“market_cap”值。 這樣做的正確方法是什么?
謝謝
試試這個解決方案,它應該會給你你正在尋找的東西:
symbol = result['data']['1INCH']['symbol']
cmc_rank = result['data']['1INCH']['cmc_rank']
market_cap = result['data']['1INCH']['quote']['BTC']['market_cap']
你試過這個嗎?
print(result["data"]["1INCH"]["symbol"])
print(result["data"]["1INCH"]["cmc_rank"])
print(result["data"]["1INCH"]["quote"]["BTC"]["market_cap"])
“{}”表示 python 字典(字典)——(方括號 [] 是一個列表,括號 () 是一個元組)。 字典也可以嵌套(與列表和元組相同)
在這種情況下,您有一個嵌套字典。 做一些縮進很有幫助...
result = {
'status': {
'timestamp': '2021-02-22T00:04:51.978Z',
'error_code': 0,
'error_message': None, 'elapsed': 46, 'credit_count': 1, 'notice': None},
'data': {
'1INCH': {
'id': 8104, 'name': '1inch', 'symbol': '1INCH', 'slug': '1inch', 'cmc_rank': 83, 'last_updated': '2021-02-22T00:03:09.000Z',
'quote': {
'BTC': {
'price': 8.793673178965842e-05, 'volume_24h': 4010.9008604493424, 'percent_change_1h': 1.77689058, 'percent_change_24h': -3.76351861, 'percent_change_7d': -19.9798068, 'percent_change_30d': 66.4333541, 'market_cap': 12615.667000751586, 'last_updated': '2021-02-22T00:03:02.000Z'}}}}}
字典中冒號 (:) 左邊的部分是鍵,右邊的部分是值。
所以在你給出的例子中: result['data']['1INCH']['symbol']
會給你 symbol 和result['data']['1INCH']['quote']['BTC']['market_cap']
會給你市值的價值。
但是,這僅在密鑰不變的情況下才有效。 在這種情況下,看起來結果以符號 ('1INCH') 作為鍵返回。 與貨幣('BTC')相同。 如果您總是期待“1INCH”和“BTC”,那么您可以對其進行硬編碼。 另一方面,如果符號和/或貨幣發生變化,您可能希望 (a) 存儲變量並改用這些變量(例如 symbol='1INCH'....result = x.query(symbol)....result ['data'][symbol].....) 或 (2) 獲取密鑰或 (3) 循環。
要獲取任何字典的鍵列表 - 在本例中,字典 'data' 的鍵: dkeys = list(result['data'].keys())
... 然后您可以檢查長度len(dkeys)
和/或使用數字訪問密鑰(因為它是一個列表) dkeys[0]
。 所以,像result['data'][dkeys[0]]...
或者您可以循環 - 如果您有多個結果,那就太好了:
#the .items() method will return 2 values - the key and value for each entry
for k, v in result['data'].items():
#k would be the symbol in this case and v is the dictionary represented by that key
market_cap = v['quote']['BTC']['market_cap']
#note if there are multiple symbols here, it would overwrite market_cap...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.