简体   繁体   中英

Python, get dictionary, nested dictionary, nested list keys

I am trying to get all keys from a json file in Python. How to get nested second level(x,y) and third level keys(a,b). For example, Keys: results,x,y,a,b

Code:

#open data
import json

with open('list.json') as f:
    my_dict = json.load(f)

#1
    #find keys
    for key in my_dict.keys():
         print("Keys : {}".format(key))

Json:

{
   "results":[
      {
         "x":5
      },
      {
         "x":5,
         "y":[
            1,
            2,
            3
         ]
      },
      {
         "x":5,
         "y":{
            "a":2,
            "b":67
         }
      }
   ]
}

Output:

Keys : results

Use recursive function to return all nested keys. Here is the reference stackoverflow page.

import json

def recursive_items(dictionary):
    for key, value in dictionary.items():
        if type(value) is list:
            for i in value:
                if type(i) is dict:
                    yield from recursive_items(i)
        else:
            yield key

with open('list.json') as f:
    my_dict = json.load(f)

    #find keys
    for key in recursive_items(my_dict):
         print("Keys : {}".format(key))

You need to get the keys which are a part of the value of the JSON.

You therefore need to iterate over the values of my_dict not the keys.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM