Причина в том, что иногда вы получаете результаты с сервера, который ваш скрипт не может проанализировать.
TypeError
происходит, когда ваш результат JSON декодируется в list
строк; скажем, ["Invalid input"]
. Ясно, что "Invalid input"['low']
не имеет смысла, так как вы не можете индексировать строки с помощью строковых ключей.
С другой стороны, KeyError
происходит, когда вы получаете объект JSON, представляющий list
из dicts
, * хотя бы один из которых не содержит ключа 'low'
.
Чтобы решить эту проблему, вы можете обернуть свою логику синтаксического анализа в блок try-except
, который ищет нужные данные и возвращает что-то вроде None
, если они не могут быть найдены. Вы также можете проверить код результата вызова get
.