2016-10-04 2 views
-1

Я пытаюсь добавить список со значениями из API для Glassdoor.Список KeyError Python

Когда я получу ответ от этого API, я получаю информацию, такую ​​как название компании, рейтинги, генеральный директор, куча дополнительной информации и, наконец, если компания принадлежит материнской компании, я получаю это тоже ,

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

Каждая компания, получающая ответ от API, может иметь разную длину и варьироваться в доступных данных.

Например:

comp_info.append(data['response']['employers'][0]['name']) 

Это то, что я пытаюсь достичь, Apple не имеет материнской компании, в то время как LSI Corporation делает. Я не уверен, как подойти к этой проблеме?

[APPLE, Тим Кук, 4,5, N/A, Компьютеры] [LSI Corporation, какой-то парень, 4,6, Avago Technologies, Компьютеры]

+0

Чтобы получить помощь отладки кода, вы должны разместить свой реальный код и фактические ошибки, вы должны вместе с данными выборки необходимых. Короче говоря, вам нужно использовать инструкции 'if' для проверки условий и выбора альтернативного поведения. Обратите внимание, что 'list' в python не вызывает' KeyError' (как указано в сводке вопросов), так как список не имеет ключей. – dsh

+0

@dsh, Согласен. Вероятно, он ссылается на словарь 'data', когда он говорит о' KeyError' – brianpck

+0

@brianpck. Я согласен с вами. Я упомянул об этом, потому что кажется, что у него недостаточно четкое понимание, чтобы определить причину проблемы и подходящее решение. – dsh

ответ

0

Я не уверен, если я полностью понимаю ваш вопрос, но Python имеет понятие «Лучше просить прощения, чем разрешения», которые могут быть полезны:

try: 
    comp_info.append(data['response']['employers'][0]['name']) 
except KeyError: 
    comp_info.append("N/A") 
    # or print ("N/A") 

Просьба уточнить ваш вопрос, если вы ищете другую обработку, чем это.

+0

Я все еще получаю KeyError, хотя мой код читает: comp_info.append (data ['response'] ['employers] [0] [' parentEmployer ']. Get (' name ',' N/A ')) –

+0

comp_info.append (данные ['response'] ['employers] [0] .get (' parentEmployer ',' N/A ')) –

+1

@RossJohnson Если вы не включили более подробную информацию, я могу только предположить: это не ясно на каком уровне возникает ошибка. Если только один ключ может отсутствовать, используйте 'get'. Если какой-либо уровень структуры данных отсутствует, используйте мой блок try. – brianpck

0

Если я вас правильно понял:

comp_info.append(data['response']['employers'][0].get('name', 'N/A')) 
0
comp_info.append(data['response']['employers'][0].get('parentEmployer', 'N/A'))