代码之家  ›  专栏  ›  技术社区  ›  Nishant Sah

在python中访问多级json文件的键

  •  -3
  • Nishant Sah  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 6 年前
        1
  •  2
  •   jpp    6 年前

    你可以用 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] .
        2
  •  2
  •   FHTMitchell    6 年前

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

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