循环遍历所有嵌套的字典值?

循环遍历所有嵌套的字典值?

for k, v in d.iteritems():
    if type(v) is dict:
        for t, c in v.iteritems():
            print "{0} : {1}".format(t, c)

我试图循环遍历一个字典,并打印出值不是嵌套字典的所有键值对。如果这个值是一个字典,我想进入它并打印出它的键值对…等等。有什么帮助吗?

编辑

这个怎么样?它仍然只印了一件东西。

def printDict(d):
    for k, v in d.iteritems():
        if type(v) is dict:
            printDict(v)
        else:
            print "{0} : {1}".format(k, v)

全测试用例

字典:

{u'xml': {u'config': {u'portstatus': {u'status': u'good'}, u'target': u'1'},
      u'port': u'11'}}

结果:

xml : {u'config': {u'portstatus': {u'status': u'good'}, u'target': u'1'}, u'port': u'11'}


catspeake
浏览 311回答 3
3回答

ibeautiful

正如尼可拉斯所说的,你需要递归,即你想要定义一个函数来打印你的DIT,如果这个值是dict,你需要使用这个新的dict来调用您的打印函数。类似于:def myprint(d):   for k, v in d.iteritems():     if isinstance(v, dict):       myprint(v)     else:       print "{0} : {1}".format(k, v)或者Python 3以后:def myprint(d):   for k, v in d.items():     if isinstance(v, dict):       myprint(v)     else:       print("{0} : {1}".format(k, v))

明月笑刀无情

替代迭代解决方案:def myprint(d):     stack = d.items()     while stack:         k, v = stack.pop()         if isinstance(v, dict):             stack.extend(v.iteritems())         else:             print("%s: %s" % (k, v))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python