我正在努力实现以下目标:
Input = {
'key1':{'key11':'val11', 'key12':'val12'},
'key2':{'key21':{'key211':'val211', 'key212':'val212'}},
'key3':'val3',
'key4':{'key41':'val41', 'key42':'val42'}
}
输出=
1)如果value是字典,则创建一个输出字符串变量=
^{pr2}$2)如果值不是字典,则打印"just a string element"
以下是我的代码:
from collections import defaultdict
def stringBuilder(dictionary):
stringOption = ""
innerString = ""
# print dictionary
for key, value in dictionary.iteritems():
if isinstance(value, dict):
stringBuilder(value)
else:
innerString = innerString + " " + str(key) + " " + str(value)
print innerString
stringOption = "{" + innerString + " }"
print stringOption
return stringOption
d = {'key1':{'key11':'val11', 'key12':'val12'}, 'key2':{'key21':{'key211':'val211', 'key212':'val212'}}, 'key3':'val3', 'key4':{'key41':'val41', 'key42':'val42'}}
print d
stringOption = ""
for key, value in d.iteritems():
if isinstance(value, dict):
stringOption = stringOption + " " + str(key) + " " + stringBuilder(value)
print stringOption
else:
print "just a string element"
print stringOption
以下是我得到的输出:
{'key2': {'key21': {'key211': 'val211', 'key212': 'val212'}}}
key211 val211
{ key211 val211 }
key2
key2
一个伟大的递归练习!在
输出:
^{pr2}$与其编写自己的实现(除非这是您想要的),为什么不使用json library?您可以扩展JSONEncoder和jsondeconder以适合您的用例吗?在
您的主要问题是您丢弃了
dict
案例的返回字符串:相反,请尝试保存该值以向上传递:
^{pr2}$结果输出:
相关问题 更多 >
编程相关推荐