I have a list of lists containing key and value like so:
[
  ['mounts:device', '/dev/sda3'],
  ['mounts:fstype:[0]', 'ext1'],
  ['mounts:fstype:[1]', 'ext3']
]
Well I can easily change the list to this
(Lists arent seperated by ':')
[
  ['mounts:device', '/dev/sda3'],
  ['mounts:fstype[0]', 'ext1'],
  ['mounts:fstype[1]', 'ext3']
]
Whatever suits better for this problem:
Problem is to create a dictionary:
{
'mounts': {
    'device': '/dev/sda3',
    'fstype': [
        'ext1',
        'ext3'
    ]
}
It should also be possible to have lists in lists for example:
['mounts:test:lala:fstype[0][0]', 'abc']
or
['mounts:test:lala:fstype:[0]:[0]', 'abc']
This is what I have so far:
def unflatten(pair_list):
    root = {}
    for pair in pair_list:
        context = root
        key_list = pair[0].split(':')
        key_list_last_item = key_list.pop()
        for key in key_list:
            if key not in context:
                context[key] = {}
            context = context[key]
        context[key_list_last_item] = pair[1]
    return root
Based on this answer https://stackoverflow.com/a/18648007/5413035 but as requested I need recursivness and lists in the mix
Thanks in advance
 
     
     
    