Python-binance对比字典列表 筛选同时有USDT和BUSD市场的币种
匹配同时上线USDT、BUSD市场交易对的实现
核心逻辑是将两类交易对按基础币种(交易对去掉稳定币后缀的部分)建立映射后取交集,避免低效的双层循环匹配,最终输出的结果同时包含两个市场的订单簿数据,可直接用于后续价差计算等场景。
完整可运行代码
from binance.client import Client # 初始化客户端,仅获取公共行情数据不需要填写API Key和Secret client = Client() def search_USDT(market_book): return [element for element in market_book if element['symbol'].endswith('USDT')] def search_BUSD(market_book): return [element for element in market_book if element['symbol'].endswith('BUSD')] if __name__ == "__main__": # 获取全市场订单簿Ticker数据 market_book = client.get_orderbook_tickers() # 将两类交易对转换为「基础币种: 订单簿数据」的字典,方便快速匹配 usdt_pair_map = {item["symbol"][:-4]: item for item in search_USDT(market_book)} busd_pair_map = {item["symbol"][:-4]: item for item in search_BUSD(market_book)} # 取两个字典的键交集,得到同时在两个市场上线的基础币种 common_base_coins = usdt_pair_map.keys() & busd_pair_map.keys() # 组装最终结果,可按需调整输出或存储格式 common_pair_list = [] for base_coin in common_base_coins: usdt_ticker = usdt_pair_map[base_coin] busd_ticker = busd_pair_map[base_coin] common_pair_list.append({ "base_coin": base_coin, "usdt_market_data": usdt_ticker, "busd_market_data": busd_ticker }) # 示例打印逻辑,不需要可以注释 print(f"=== 基础币种:{base_coin} ===") print(f"USDT交易对:{usdt_ticker['symbol']} | 买一价:{usdt_ticker['bidPrice']} | 卖一价:{usdt_ticker['askPrice']}") print(f"BUSD交易对:{busd_ticker['symbol']} | 买一价:{busd_ticker['bidPrice']} | 卖一价:{busd_ticker['askPrice']}")
注意事项
- USDT、BUSD后缀长度均为4个字符,用
[:-4]截取基础币种不会出现截断错误 - 字典映射匹配的时间复杂度为O(n+m),比双层循环遍历的O(n*m)效率高很多,全市场行情数据下运行无性能压力
- 最终生成的
common_pair_list已经结构化存储了两个市场的订单簿数据,不需要额外二次查询,可以直接用于价差统计、套利信号判断等后续逻辑
内容的提问来源于stack exchange,提问作者picketsnif
相关产品推荐
相关产品推荐

