所以我有一个好的。我正试图从两个不同的交易所建立两个加密代码列表(ku_coins
和bin_coins
),但我不想重复,所以如果它出现在两个交易所上,我想从ku_coins
中删除它
当Kucoin符号以AION-BTC
的形式出现,而Binance符号以AIONBTC
的形式出现时,会出现一点复杂的情况,但这没有问题
首先,我创建了两个符号列表,运行良好,没有问题。然后我尝试通过Kucoin符号循环,并将它们转换为二进制样式的符号,因此AIONBTC
而不是AION-BTC
。如果它出现在二进制列表中,我想把它从Kucoin列表中删除。然而,它似乎随机拒绝删除少数符合要求的符号。例如AION
它删除了大部分的折叠符号,但在AIONs的情况下,例如它只是不会删除它
如果我在这个循环之后执行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)
将代码修改为:
pop()
方法从ku_coins
列表中删除i
pop()
@top bantz,@Fourier已经提到了不应该修改正在迭代的列表。在这种情况下,您可以先创建
ku_coins
的副本,然后对其进行迭代,然后从与if
条件匹配的原始ku_coins
中删除元素。见下表:相关问题 更多 >
编程相关推荐