2016-10-04 4 views
-1

Glassdoor 용 API의 값이있는 목록을 추가하려고합니다.List KeyError Python

이 API에서 응답을 받으면 회사 이름, 평점, CEO, 무리 정보와 같은 정보를 얻습니다. 마지막으로 회사가 모기업의 소유이면 마지막 정보도 얻습니다. .

내 문제는 API에서 응답을받는 회사에 모회사가 없으면이 모든 정보로 내 목록을 추가 할 때 다른 관련 데이터의 추출을 생략하고 싶지 않습니다. 이름, CEO 등등. 회사의 응답에 대해 사용 가능한 데이터를 인쇄 한 다음 모회사가 인쇄하지 않는 곳에 인쇄하십시오.

API로부터 응답을받은 각 회사는 사용 가능한 데이터의 길이가 다르거 나 가변적 일 수 있습니다. 예를 들어

는 : LSI 공사가하는 동안

이 내가 달성하기 위해 노력하고있어입니다
comp_info.append(data['response']['employers'][0]['name']) 

, 애플은 모회사가 없습니다. 이 문제에 접근하는 방법을 모르겠습니다.

[애플, 팀 쿡, 4.5, N/A, 컴퓨터 하드웨어] [LSI 공사, 일부 가이, 4.6, 아바고 테크놀로지스, 컴퓨터] 나는 완전히 당신의 질문을 이해한다면

+0

당신의 코드를 디버깅 도움을 받으려면, 당신은 당신의 실제 코드 및 필요한 샘플 데이터와 함께이 실제 오류를 게시해야합니다. 즉 조건을 테스트하고 다른 동작을 선택하려면'if' 문을 사용해야합니다. 목록에 키가 없으므로 파이썬의'list'는'KeyError'를 발생시키지 않습니다 (질문 요약에 표시된대로). – dsh

+0

@dsh, 동의 함. 그는 아마도'KeyError'에 대해서 이야기 할 때'data' 사전을 언급하고있을 것입니다. – brianpck

+0

@brianpck 나는 당신과 동의합니다. 나는 그가 문제의 원인과 적절한 해결책을 밝히기에 충분한 명확한 이해가없는 것처럼 보이기 때문에 그것을 언급했다. – dsh

답변

0

나는 확실하지 않다, 하지만 파이썬은 여기에 도움이 될 수있는 그 "권한보다 용서를 물어 더 나은"의 개념이 :이 다른 처리를 찾고 있다면

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 (데이터 [ '응답'] [ '고용주'] [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'))