如何基于指定列表筛选API响应数据
实现Binance期货API指定币种数据筛选与格式化输出
核心实现逻辑
要完成指定列表的筛选和格式化输出,分两步走:精准筛选目标数据 + 格式化对齐输出
1. 高效筛选目标币种
把目标币种列表转成集合(查找效率远高于列表),遍历API响应时只保留symbol在集合中的数据:
- 集合的
in操作时间复杂度为O(1),列表是O(n),数据量越大优势越明显 - 确保只处理我们需要的币种,避免无用计算
2. 格式化输出对齐
针对每个字段做两种处理:
- 数字千分位格式化:让大数字更易读
- 指定字段宽度:保证输出的每一列对齐,和示例格式一致
完整代码实现
import requests # 目标币种列表(转成集合提升查找效率) to_search = {'APTUSDT', 'PHBBUSD', 'RUNEUSDT'} url = "https://fapi.binance.com/fapi/v1/ticker/24hr" headers = {} # 根据实际需求添加headers,比如API密钥等 try: response = requests.get(url, headers=headers, timeout=1).json() except Exception as e: print(f"请求API失败: {e}") exit() # 遍历筛选并格式化输出 for item in response: symbol = item['symbol'] if symbol not in to_search: continue # 提取字段并转换类型 price_change = float(item['priceChangePercent']) count = int(item['count']) volume = int(float(item['volume'])) # 接口返回字符串格式数字,需转类型 quote_volume = float(item['quoteVolume']) # 格式化输出:指定宽度+千分位分隔 print("{:<10} {:>12,} {:>10,} {:>12,} {:>15,.2f}".format( symbol, round(price_change), # 示例为整数,需保留小数可调整此处逻辑 count, volume, quote_volume ))
代码细节说明
- 集合筛选:
to_search用集合而非列表,大幅提升查找速度,尤其是当目标币种数量较多时 - 类型转换:接口返回的部分字段是字符串格式的数字,需要转成对应类型(整数/浮点数)才能做格式化
- 格式化语法:
:<10:左对齐,占10个字符宽度:>12,:右对齐,占12个字符宽度,数字添加千分位分隔符:>15,.2f:右对齐,占15个字符宽度,浮点数保留2位小数并添加千分位
输出效果
运行后会得到和示例一致的对齐格式:
APTUSDT 1,312,321 12,312 1,212,132 12,321,312.79 PHBBUSD 545,543 34,234 87,978 1,232.23 RUNEUSDT 344 8,543 2,357 943.45
内容的提问来源于stack exchange,提问作者Drew Duazeh
相关产品推荐
相关产品推荐

