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

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

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

catspeake 2019-07-26 14:14:11
循环遍历所有嵌套的字典值?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 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

正如尼可拉斯所说的,你需要递归,即你想要定义一个函数来打印你的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-27
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

替代迭代解决方案:

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-27
  • 3 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

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