在python中访问多级JSON文件的密钥

时间:2018-05-30 09:12:04

标签: python json python-3.x dictionary

我有一个json文件,看起来像:

{
    "ancestors": [
        {
            "subcategory": [
                {
                    "key": "city",
                    "name": "City"
                }
            ],
            "name": "Da Lat"
        },
        {
            "subcategory": [
                {
                    "key": "province",
                    "name": "Province"
                }
            ],
            "name": "Lam Dong Province"
        },
        {
            "subcategory": [
                {
                    "key": "country",
                    "name": "Country"
                }
            ],
            "name": "Vietnam"
        }
    ],
}

问题是我需要访问其子键为省的子类别的名称。

我想访问“林东省”

我无法弄清楚如何上升一级并检查条件。

2 个答案:

答案 0 :(得分:2)

迭代它,检查你想要的条件。如果条件为真,则返回所需的值。

def search_subcategories(json_dict):
    for element in json_dict['ancestors']:
        if element['subcategory'][0]['key'] == 'province':
             return element['name']

答案 1 :(得分:2)

您可以将next与生成器理解结合使用。

res = next(i['name'] for i in json_dict['ancestors'] if
           i['subcategory'][0]['key'] == 'province')

# 'Lam Dong Province'

要构建条件i['subcategory'][0]['key'],您只需注意:

  1. 列表由[]表示,列表中唯一的元素可以通过[0]检索。
  2. 字典用{}表示,可以通过[key]检索值。