Python 复制有条件的子列表

Python copy sublists with conditions

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()

我已连接到币安的 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 将仅包含您的代码的唯一近期交易。将该列表写入文件并将其加载到您的订单脚本中。