Get a list of all keys in nested dictionary

前端 未结 3 860
遇见更好的自我
遇见更好的自我 2021-01-15 12:13

I want to get a list of all keys in a nested dictionary that contains lists and dictionaries.

I currently have this code, but it seems to be missing adding some keys

3条回答
  •  暖寄归人
    2021-01-15 12:45

    Updating @MackM's response to Python 3 as dict.iteritems has been deprecated (and I prefer to use f-strings over the .format{} styling):

    keys_list = []
    def get_keys(d_or_l, keys_list):
        if isinstance(d_or_l, dict):
            for k, v in iter(sorted(d_or_l.items())):  #  Altered line to update deprecated method
                if isinstance(v, list):
                    get_keys(v, keys_list)
                elif isinstance(v, dict):
                    get_keys(v, keys_list)
                keys_list.append(k)   
        elif isinstance(d_or_l, list):
            for i in d_or_l:
                if isinstance(i, list):
                    get_keys(i, keys_list)
                elif isinstance(i, dict):
                    get_keys(i, keys_list)
        else:
            print(f'** Skipping item of type: {type(d_or_l)}')  #  Altered line to use f-strings
        return keys_list
    
    
    unique_keys = list(set(get_keys(my_json_dict, keys_list)))  # Added line as example use case
    

提交回复
热议问题