2016-10-04 14 views
-1

GlassdoorのAPIの値をリストに追加しようとしています。List KeyError Python

このAPIから回答が返ってくると、会社名、評価、最高経営責任者(CEO)、沢山の情報などの情報が得られます。最後に、親会社が所有している場合は、 。

私の問題は、APIからの回答を得ている会社に親会社がない場合、私はこの情報をすべて私のリストに追加することです。他の関連するデータの抽出をスキップしたくありません。私はそれがその会社の回答のための利用可能なデータを印刷し、次に親会社がどこに印刷されているかを印刷したいと思います。

APIからの回答を得た各企業は、利用可能なデータの長さ/種類が異なる可能性があります。例えば

:LSIコーポレーションはないながら

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

これは私が達成しようとしているものです、Appleは、親の会社を持っていません。私はこの問題にどのようにアプローチするのか分かりません。

[APPLE、ティム・クック、4.5、N/A、コンピュータのハードウェア] [LSIコーポレーション、いくつかの男、4.6、アバゴ・テクノロジー、コンピュータのハードウェア]

+0

があなたのコードをデバッグ支援を受けるには、あなたの実際のコードと必要なサンプルデータと一緒に持って実際のエラーをポストする必要があります。要するに、if文を使って条件をテストし、代わりの動作を選択する必要があります。リストにはキーがないので、Pythonの 'list'は(あなたの質問の要約に示されているように)' KeyError'を出しません。 – dsh

+0

@dsh、Agreed。彼はおそらく 'KeyError'について話しているときに' data'辞書を参照しています – 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( '[employer'] [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'))