# Python | Find depth of a dictionary

Prerequisite: Nested dictionary

The task is to find the depth of given dictionary in Python. Let’s discuss all different methods to do this task.

Examples:

Input : {1:'a', 2: {3: {4: {}}}}
Output : 4

Input : {'a':1, 'b': {'c':'geek'}}
Output : 3

Approach #1 : Naive Alpproach

A naive approach in order to find the depth of a dictionary is to count the number of opening curly braces. But, one drawback of this approach is that it would only work if the input is correct.

 # Python3 Program to find depth of a dictionary def dict_depth(dic, level = 1):             str_dic = str(dic)     counter = 0     for i in str_dic:         if i == "{":             counter += 1     return(counter)     # Driver code  dic = {1:'Geek', 2: {3: {4: {}}}} print(dict_depth(dic))

Output:

4

Approach #2: Using recursion

In this method we use recursion with max() function which picks the greatest depth for the current dictionary under scrutiny at each level.

 # Python3 Program to find depth of a dictionary def dict_depth(dic, level = 1):            if not isinstance(dic, dict) or not dic:         return level     return max(dict_depth(dic[key], level + 1)                                for key in dic)    # Driver code  dic = {1:'a', 2: {3: {4: {}}}}    print(dict_depth(dic))

Output:

4

Another version of the recursive solution is to use map() function by which the values of the inner dictionary is mapped to the called function.

 # Python3 Program to find depth of a dictionary def dict_depth(my_dict):     if isinstance(my_dict, dict):                    return 1 + (max(map(dict_depth, my_dict.values()))                                     if my_dict else 0)                return 0    # Driver code  my_dict = {1:'a', 2: {3: {4: {}}}} print(dict_depth(my_dict))

Output:

4

Approach #3: Iterative Solution

In this approach, we save the nested key and its initial depth in a variable, say p_dict. Now, start a loop for p_dict, and keep popping values while digging deeper for nested dictionaries.

 # Python3 Program to find depth of a dictionary def dict_depth(myDict):        Ddepth = 1     obj = [(k, Ddepth + 1) for k in myDict.values()                           if isinstance(k, dict)]     max_depth = 0            while(obj):         n, Ddepth = obj.pop()         max_depth = max(max_depth, Ddepth)                    obj = obj + [(k, Ddepth + 1) for k in n.values()                                  if isinstance(k, dict)]                return max_depth        # Driver code  myDict = {1:'a', 2: {3: {4:{}}}} print(dict_depth(myDict))

Output:

4

My Personal Notes arrow_drop_up

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.