Так что у меня есть хороший. Я пытаюсь построить два списка (ku_coins
и bin_coins
) криптографических тикеров из двух разных бирж, но я не хочу удваивать, поэтому, если он появляется на обеих биржах, я хочу удалить его из ku_coins
.
Небольшое осложнение происходит, когда символы Kucoin появляются как AION-BTC
, тогда как символы Binance входят как AIONBTC
, но это не проблема.
Итак, во-первых, я создаю два списка символов, который работает нормально, без проблем. Затем я пытаюсь выполнить цикл по символам Kucoin и преобразовать их в символ стиля Binance, поэтому AIONBTC
вместо AION-BTC
. Затем, если он появится в списке Binance, я хочу удалить его из списка Kucoin. Однако, по-видимому, случайным образом отказывается удалять несколько символов, которые соответствуют требованию. Например AION
.
Удаляет большинство удвоенных символов, но в случае AION, например, он просто не удаляет его.
Если я просто сделаю print(i)
после этого цикла:
for i in ku_coins:
if str(i[:-4] + 'BTC') in bin_coins:
Он с радостью напечатает AION-BTC
как один из символов, так как он идеально соответствует требованию. Однако, когда я вставляю команду ku_coins.remove(i)
перед печатью, она вдруг решает не печатать AION, предполагая, что она не соответствует требованиям. И это заставляет меня задуматься. Очевидно, что команда remove
вызывает проблему, но я не могу понять, почему. Любая помощь очень ценится.
import requests
import json
ku_dict = json.loads(requests.get('https://api.kucoin.com/api/v1/market/allTickers').text)
ku_syms = ku_dict['data']['ticker']
ku_coins = []
for x in range(0, len(ku_syms)):
if ku_syms[x]['symbol'][-3:] == 'BTC':
ku_coins.append(ku_syms[x]['symbol'])
bin_syms = json.loads(requests.get('https://www.binance.com/api/v3/ticker/bookTicker').text)
bin_coins = []
for i in bin_syms:
if i['symbol'][-3:] == 'BTC':
bin_coins.append(i['symbol'])
ku_coins.sort()
bin_coins.sort()
for i in ku_coins:
if str(i[:-4] + 'BTC') in bin_coins:
ku_coins.remove(i)