如何解决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 在子列表中的索引 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
将仅包含您的代码的唯一最近交易。将该列表写入文件并加载到您的 make orders 脚本中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。