Python处理CoinMarketCap接口数据时如何访问指定slug对应的id
问题说明
你当前的代码将接口返回的原始slug字段(如bitcoin、litecoin这类唯一标识字符串)直接覆盖为id数值,丢失了用于查询的原始slug值,无法实现通过slug获取对应id的需求。
实现方案
无需修改接口返回的原始数据,直接构造slug到id的映射字典即可,查询效率更高,实现代码如下:
import os from requests import Session import json CMC_API_KEY = os.environ.get('CMC') parameters = { 'start': 1, 'limit': 1500 } headers = { 'Accepts': 'application/json', 'X-CMC_PRO_API_KEY': CMC_API_KEY } session = Session() session.headers.update(headers) url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/map' response = session.get(url, params=parameters) data = json.loads(response.text)['data'] # 构造slug到id的映射字典 slug_to_id = {item['slug']: item['id'] for item in data}
查询示例
# 查询比特币(slug为bitcoin)对应的id btc_id = slug_to_id.get('bitcoin') print(btc_id) # 输出结果为1 # 查询不存在的slug时可指定默认返回值,避免抛出异常 unknown_id = slug_to_id.get('not_exists_slug', '未找到对应加密货币') print(unknown_id) # 输出未找到对应加密货币
补充说明
- 直接通过
slug_to_id['目标slug']即可获取对应id,查询时间复杂度为O(1),远高于遍历列表查询的效率 - 若你确实需要保留修改slug为id的操作,可在构造映射字典后再执行对应的覆盖逻辑即可
内容的提问来源于stack exchange,提问作者Wassim Maestro
相关产品推荐
相关产品推荐

