python - 将嵌套字典转换为字符串

标签 python python-2.7 dictionary recursion

我正在努力实现以下目标:

Input = {
    'key1':{'key11':'val11', 'key12':'val12'},
    'key2':{'key21':{'key211':'val211', 'key212':'val212'}},
    'key3':'val3',
    'key4':{'key41':'val41', 'key42':'val42'}
}

输出=

1)当value是字典时,则创建输出字符串变量=

key1 { key11 val11 key12 val12 } key2 { key21 { key211 val211 key212 val212 }} key4 { key41 val41 key42 val42}

2)当value不是字典时,则打印“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 

最佳答案

您的主要问题是您丢弃了 dict 案例返回的字符串:

    if isinstance(value, dict):
        stringBuilder(value)

相反,尝试保存该值以传递回该行:

    if isinstance(value, dict):
        stringOption = stringBuilder(value)

结果输出:

key2 { key211 val211 key212 val212 } key1 { key12 val12 key11 val11 } key4 { key41 val41 key42 val42 }

关于python - 将嵌套字典转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108743/

相关文章:

python - 使用字典查找文本文件中出现次数最多的单词

c++ - 如何以特定方式在 C++ STL 中查找?

python - django中的日期时间显示和时区转换

python - 只能访问某些具有负索引的 BeautifulSoup 结果元素

python - 我应该使用什么工具来分析 Windows 7 上的 Python 代码

python - 参数为函数的 lambda 化函数的 Lambda

python - 在设置项目时充当 defaultdict 但在获取项目时不充当 defaultdict 的嵌套字典

python - 在 python 中读取图像 - 试验图像

python - 在不迭代的情况下检测 Pandas DataFrame 列中的连续重复

python - 如何将 dict 转换为递归 defaultdict 并加载 JSON?