将嵌套字典转换为文件

时间:2019-06-10 19:10:07

标签: python

我有一个字典,可以通过从文件中提取并修改值来对其进行修改,现在我想以类似的格式将其放回文件中。

字典与以下内容相似:

d={'a':
    {'c':'something else',
     'd':{'e':'some item'}
    },
   'b':
    {'z':'something else',
     's':{'f':'some item'}
    }
  }

这是一本非常长的字典,带有嵌套项目,我想我必须使用某种递归

我不确定当前该如何处理,因此我没有现有的代码可以从我所在的位置获取,这是字典到文件的信息。

我试图获得的最终结果如下:换行符和空格:

<a>
    c = something else
    <d>
        e = some item
    </d>
</a>
<b>
    z = something else
    <s>
        f = some item
    </s>
</b>

1 个答案:

答案 0 :(得分:6)

d={'a':
    {'c':'something else',
     'd':{'e':'some item'}
    },
   'b':
    {'z':'something else',
     's':{'f':'some item'}
    }
}

def printer(d, t=0):
    for k, v in d.items():
        if isinstance(v, str):
            yield '\t' * t + '{} = {}'.format(k, v)
        else:
            yield '\t' * t + '<{}>'.format(k)
            yield from printer(v, t=t+1)
            yield '\t' * t + '</{}>'.format(k)

s = '\n'.join(printer(d))
print(s)

打印:

<a>
    c = something else
    <d>
        e = some item
    </d>
</a>
<b>
    z = something else
    <s>
        f = some item
    </s>
</b>