2017-06-18 50 views
0

我在玩python和JSON文件。我正在做一个简单的游戏作为一个学习项目,但是我无法在需要时按需求在列表中获取嵌套密钥。在下面的例子中,我试图获得玩家的名字。如何在包含嵌套字典的列表中调用特定键?

这是JSON文件(player_sheet_daniel.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']) 

我得到:KeyError: 'sheet_header'

+0

只有一个'sheet_py'节实际上包含了'sheet_header'键。 – jonrsharpe

+0

是的,我认为这会被忽略...所以我需要做一个如果检查之前的电话然后......不知道。谢谢。 –

+0

为什么会这样?你可以首先检查section'中的'sheet_header',或者使用'section.get('sheet_header')',或者用'try:'和'除了KeyError;'来防止。 – jonrsharpe

回答

0

您的JSON示例是一个包装两个对象的数组。因此,正确的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

嗨,忘了感谢你的评论......谢谢 –

相关问题