2017-06-18 10 views
0

私はPythonとJSONファイルで遊んでいます。私は学習プロジェクトとしてシンプルなゲームをしていますが、必要に応じてリストにネストされたキーをフェッチすることはできません。下の例では、私はプレーヤーの名前を取得しようとしています。ネストされた辞書を含むリスト内の特定のキーを呼び出すにはどうすればよいですか?

[ 
    { 
     "sheet_header": { 
      "player name": "Daniel", 
      "character name": "Ulrik the Blob" 
     } 
    }, 
    { 
     "prim_attr": { 
      "STR": "11", 
      "DEX": "12", 
      "HP": "15", 
      "SKI": "16" 
     } 
    } 
] 

私が試した:

import json 
with open('player_sheet_daniel.json','r') as sheet_json:   
    sheet_py = json.load(sheet_json)     
    for section in sheet_py:       
     print(section['sheet_header']['player name']) 

私が手:

この

はJSONファイル( player_sheet_daniel.json)である KeyError: 'sheet_header'

+0

「sheet_pyの1つのセクション」には、実際には「sheet_header」というキーが含まれています。 – jonrsharpe

+0

はい、私はそれが無視されるだろうと思ったので...コールの前にifチェックをする必要があります。ありがとう。 –

+0

なぜでしょうか?セクション '' sheet_header 'を最初にチェックするか、 'section.get(' sheet_header ')'を使うか、 'try:'と 'except KeyError;を使ってガードすることができます。 – jonrsharpe

答えて

0

JSONの例は、2つのオブジェクトをラップする配列です。したがって、正確なPython構文は次のようになります:

import json 
with open('player_sheet_daniel.json','r') as sheet_json:   
    sheet_py = json.load(sheet_json) 
    section = sheet_py[0]      
    print(section['sheet_header']['player name']) 
+0

こんにちは、ありがとう、あなたのコメントをお寄せいただきありがとうございます...ありがとう –

関連する問題