code: def _unflatten_tree(flat):
      
      tree = {}
      for key, value in flat.items():
          path = key.split("/")
          # we are at the end of a branch
          if len(path) == 1:
              tree[key] = value
          # there are more branches
          else:
              # create new dict
              if not path[0] in tree:
                  tree[path[0]] = _unflatten_tree({"/".join(path[1:]): value})
              # add keys to existing dict
              else:
                  branch = _unflatten_tree({"/".join(path[1:]): value})
                  if not path[1] in tree[path[0]]:
                      tree[path[0]][path[1]] = branch[path[1]]
                  else:
                      tree[path[0]][path[1]].update(branch[path[1]])
      return tree
docs: Reverse tree flattening.