оператор if с логическим значением внутри цикла: ошибка «NoneType»

Я искал в stackoverflow и нашел много сообщений об ошибке, я пробовал многие из представленных решений, но ни одно из них не работает. Проблема выглядит такой простой, что я действительно запутался, что не так.

Я делаю вызов API к Binance, на выходе получается длинный словарь. Я получаю интересующий меня ключ, и он возвращает либо True, либо False. Когда я проверяю тип, он показывает, что это логическое значение. Я просто запускаю цикл для разных символов в списке и проверяю, верно ли значение, если да, добавляю имя символа в новый список.

test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
    info = client.get_symbol_info(x)
    a = info['isMarginTradingAllowed']
    if a:
        tickers.append(x)

TypeError: 'NoneType' object is not subscriptable

Любая помощь очень ценится. вот вывод информации

 {'symbol': 'BTCUSDT',
 'status': 'TRADING',
 'baseAsset': 'BTC',
 'baseAssetPrecision': 8,
 'quoteAsset': 'USDT',
 'quotePrecision': 8,
 'baseCommissionPrecision': 8,
 'quoteCommissionPrecision': 8,
 'orderTypes': ['LIMIT',
  'LIMIT_MAKER',
  'MARKET',
  'STOP_LOSS_LIMIT',
  'TAKE_PROFIT_LIMIT'],
 'icebergAllowed': True,
 'ocoAllowed': True,
 'quoteOrderQtyMarketAllowed': True,
 'isSpotTradingAllowed': True,
 'isMarginTradingAllowed': True}

person L4ucky    schedule 10.04.2020    source источник
comment
client.get_symbol_info(x) равно None по крайней мере для одного x, взятого из test. Вы проверили, успешен ли этот вызов API для всех используемых вами входных данных?   -  person Brian    schedule 11.04.2020


Ответы (1)


Ваша ошибка находится в информационной переменной, None для одного x в списке тестов

Эта проверка устраняет проблему:

test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
    info = client.get_symbol_info(x)
    if info is None: continue
    a = info['isMarginTradingAllowed']
    if a:
        tickers.append(x)
person Cristian Contrera    schedule 10.04.2020