python - Python 复制带有条件的子列表
问题描述
list_0 = []
list_1 = []
def sort_data():
trades = client.get_recent_trades(symbol='BTCUSDT', limit=50)
for t in trades:
id_zero = [int(t["id"]), int(t["isBuyerMaker"]), float(t["quoteQty"]).__round__(2)]
list_0.append(id_zero)
dup = [x[0] for x in list_0]
for x in dup:
if x not in list_1:
?
while True:
sort_data()
我已连接到 Binance 的 API,我想查看最近的交易。到目前为止,很好,我可以用client.get_recent_trades
我必须一次下载 50 笔交易,否则会太慢而且我会丢失大部分交易。我可以在特定的 ID 上看到它。
ID: 560, 565, 576, 587, ...
例如对我没用,我失去了其他人。
在每个数据包中,只有少数“新鲜”数据。我不想将重复项附加到我的列表中,所以我尝试检查 ID 以过滤掉重复项
dup = [x[0] for x in list_0]
Example sublist: [234543234, 1, 4543.45]
我不知道如何执行以下操作:检查每个条目的list_0
ID(ID 在 sublist 中的索引 0 上),当 ID 不在时list_1
,将整个数据集/子列表 [ID, isBuyerMaker, quoteQty] 复制到list_1
.
当它是一个“静态”例程时,我会知道该怎么做,但在这里我有一个每秒都有新数据的例程,我不知道如何处理它。我不能用迭代来做,[-1]
因为它很慢。
解决方案
在这种情况下不要使用它,使用 websocket:
from binance.websockets import BinanceSocketManager
from binance.client import Client
client = Client('PUBLIC', 'PRIVATE')
lst = []
def process_message(msg):
lst.append(msg)
print (lst)
bm = BinanceSocketManager(client)
conn_key = bm.start_trade_socket('BNBBTC', process_message)
bm.start()
该列表lst
将仅包含您的交易品种的唯一近期交易。将该列表写入文件并将其加载到您的制作订单脚本中。
推荐阅读
- javascript - Next.js API 路由响应为空
- pdf - 图像转换为pdf文件,图像的文件大小比pdf文件大得多
- java - Java如何从文本文件中排序
- python - 使用 Bash 控制 TP-Link Kasa 本地交换机
- sql - 防止外键冲突的可能性
- python - 如何在 VSCode 上用 Python 读取 SQLite 数据库?
- php - Laravel 中的实时过滤器
- c# - udpclient.receive 从未知(随机)端口
- flutter - 日文标签无法在 Mapbox 上显示
- google-apps-script - 自动 GMail 分级(谷歌脚本)