我遇到的问题是,当我尝试访问嵌套字典中的值时,我不能这样做,因为它返回的是列表而不是字典。
我有一个具有这种格式的.json文件;
{
"users": [
{
"1": {
"1": "value",
"2": "value"
}
}
]
}
我加载.json文件,并使用此函数访问所需的值
def load_json(fn):
with open(fn) as pf:
data = json.load(pf)
return data['users']['1']['2']
如果我只是做return data
,那是一本字典,但是如果尝试通过添加['users']
来进一步访问,它将变成一个列表,并且如果我尝试访问键#1,将给出索引错误。或其中的#2。
例如,我的目标是获取嵌套键#2的值,理想情况下无需循环访问它。
答案 0 :(得分:0)
您的JSON包含一个包装(内部list
的数组(Python dict
)(这就是JSON中的[
和]
的含义)。您所需要做的就是更改:
return data['users']['1']['2']
收件人:
return data['users'][0]['1']['2']
# ^^^ Added
为list
编制索引以进入内部dict
。
答案 1 :(得分:0)
给出您的数据结构,并对其进行跟踪:
data
是一本字典-具有一个键“ users”和一个列表值data['users']
是一个列表-只有一个条目data['users'][0]
是一本字典-具有一个键“ 1”和一个字典值data['users'][0][1]
是字典-具有两个键“ 1”和“ 2” 所以您需要这样做:
def load_json(fn):
with open(fn) as pf:
data = json.load(pf)
return data['users'][0]['1']['2']