How to handle recursion in python? -


sketched small function on examples internet, there problems recursion ...

def tosimplexml(data, wrap = false):     result = list()     input_data_type = type(data)     if input_data_type list:         sub_element in data:             result.append(tosimplexml(sub_element))         return ''.join(result)     elif input_data_type dict:         tag_name in data:             sub_element = data[tag_name]             result.append('<%s>' % tag_name)             result.append(tosimplexml(sub_element))             result.append('</%s>' % tag_name)         return ''.join(result)      if wrap:         return '<%s>%s</%s>' % (wrap, data, wrap)      return data  data = [{'element_1': 'value_1'}, {'element_2': {'element_2_1': 'value_2_1'}}, {'element_1': 'value_1'}] print tosimplexml(data, 'root') 

by idea result should wrapped root, wrap variable false...

the function returns too early wrap come play. set data instead of returning:

def tosimplexml(data, wrap = false):     result = list()     input_data_type = type(data)     if input_data_type list:         sub_element in data:             result.append(tosimplexml(sub_element))         data = ''.join(result)     elif input_data_type dict:         tag_name in data:             sub_element = data[tag_name]             result.append('<%s>' % tag_name)             result.append(tosimplexml(sub_element))             result.append('</%s>' % tag_name)         data = ''.join(result)      if wrap:         return '<%s>%s</%s>' % (wrap, data, wrap)      return data 

now if wrap statement reached:

>>> print tosimplexml(data, 'root') <root><element_1>value_1</element_1><element_2><element_2_1>value_2_1</element_2_1></element_2><element_1>value_1</element_1></root> 

Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -