Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将嵌套字典转换为文件_Python - Fatal编程技术网

Python 将嵌套字典转换为文件

Python 将嵌套字典转换为文件,python,Python,我有一个字典,我通过从文件中提取并修改值来修改它,现在我想以类似的格式将它放回一个文件中 字典类似于以下内容: d={'a': {'c':'something else', 'd':{'e':'some item'} }, 'b': {'z':'something else', 's':{'f':'some item'} } } 这是一个包含嵌套项的很长的字典,我猜我必须使用某种递归 我不知道目前该怎么做,所以我没有现有的代码可以从

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

字典类似于以下内容:

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>

c=其他东西
e=某些项目
z=其他东西
f=某个项目
d={'a':
{'c':'something',
'd':{'e':'some item'}
},
“b”:
{'z':'something',
's':{'f':'some item'}
}
}
def打印机(d,t=0):
对于d.项()中的k,v:
如果存在(v,str):
产生'\t'*t+'{}={}'。格式(k,v)
其他:
产生'\t'*t+''。格式(k)
来自打印机的产量(v,t=t+1)
产生'\t'*t+''。格式(k)
s='\n'.加入(打印机(d))
印刷品
印刷品:

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

c=其他东西
e=某些项目
z=其他东西
f=某个项目

是否仅存储类型为
str
dict
的值?值是带字符串的嵌套字典。在python 2.7或更早版本的python 3中有没有办法做到这一点?旧版本似乎不支持f'strings'@user1601716更新了我的答案。现在它使用了
format()
方法。这样,你会如何在python2.7中实现“从打印机(v,t=t+1)产生”呢?@user1601716我想这就是我要给你的答案。这是一个很好的答案。我在考虑递归路线。真棒
<a>
    c = something else
    <d>
        e = some item
    </d>
</a>
<b>
    z = something else
    <s>
        f = some item
    </s>
</b>