嵌套字典访问返回列表

时间:2020-06-26 03:08:00

标签: python list dictionary nested

我遇到的问题是,当我尝试访问嵌套字典中的值时,我不能这样做,因为它返回的是列表而不是字典。

我有一个具有这种格式的.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的值,理想情况下无需循环访问它。

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']