Python代码获取JSON中price_btc最高价格结果异常求助
问题排查与修正方案
首先,你得到1.0的结果其实是完全合理的——因为你选错了字段!price_btc代表的是比特币相对于比特币的价格,这个数值永远都是1.0,不管什么时候都不会变,所以你的循环逻辑没问题,但查询的指标根本不是你想要的法币价格。
问题细节拆解
你代码里注释写的“每个元素为[数量, 价格]”是错误的,price_btc里的每个元素是[Unix时间戳, 对应时间的BTC计价价格],而BTC对BTC的价格自然是1,所以遍历后得到的最大值必然是1.0。
修正方案:获取法币计价的最高价格
如果你想获取比特币的历史最高法币价格(比如美元价格),只需把字段改成price_usd即可,修正后的代码如下:
import requests import json url = "https://graphs2.coinmarketcap.com/currencies/bitcoin/" r = requests.get(url) cont = r.json() max_price = 0 for item in cont["price_usd"]: # item[0]是时间戳,item[1]是对应时间的美元价格 if item[1] > max_price: max_price = item[1] print(f"比特币历史最高美元价格: {max_price}")
更简洁的写法
你还可以用Python内置的max()函数来简化代码,不用手动写循环,效率更高:
import requests url = "https://graphs2.coinmarketcap.com/currencies/bitcoin/" cont = requests.get(url).json() # 生成器表达式直接提取所有价格,取最大值 max_price = max(item[1] for item in cont["price_usd"]) print(f"比特币历史最高美元价格: {max_price}")
额外提示
如果想查看所有可用的指标字段,可以先打印cont的键:
print(cont.keys())
会输出类似:dict_keys(['price_btc', 'price_usd', 'market_cap_by_available_supply', 'volume_usd', 'open'])
这些都是你可以查询的其他数据维度。
内容的提问来源于stack exchange,提问作者j.doe
相关产品推荐
相关产品推荐

