为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2019-07-22 19:48:25
循环遍历所有嵌套的字典值?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'}
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

正如尼可拉斯所说的,你需要递归,即你想要定义一个函数来打印你的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))


查看完整回答
反对 回复 2019-07-22
?
呼如林

TA贡献1798条经验 获得超3个赞

替代迭代解决方案:

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))


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 2290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信