JokerMartini
JokerMartini

Reputation: 6147

How to create a nested dictionary from a list in Python?

I have a list of strings: tree_list = ['Parents', 'Children', 'GrandChildren']

How can i take that list and convert it to a nested dictionary like this?

tree_dict = {
    'Parents': {
        'Children': {
            'GrandChildren' : {}
        }
    }
}

print tree_dict['Parents']['Children']['GrandChildren']

Upvotes: 21

Views: 19766

Answers (3)

Sven Marnach
Sven Marnach

Reputation: 602635

This easiest way is to build the dictionary starting from the inside out:

tree_dict = {}
for key in reversed(tree_list):
    tree_dict = {key: tree_dict}

With an arbitrary terminal value:

result = ... # terminal value 
for k in reversed(keys):
    result = {k:  result}
# result is the nested dict

Upvotes: 43

Kh40tiK
Kh40tiK

Reputation: 2336

This is a short solution:

lambda l:reduce(lambda x,y:{y:x},l[::-1],{})

Upvotes: 10

Guillaume
Guillaume

Reputation: 6029

Using a recursive function:

tree_list = ['Parents', 'Children', 'GrandChildren']

def build_tree(tree_list):
    if tree_list:
        return {tree_list[0]: build_tree(tree_list[1:])}
    return {}

build_tree(tree_list)

Upvotes: 13

Related Questions