亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

循環遍歷所有嵌套的字典值?

循環遍歷所有嵌套的字典值?

楊__羊羊 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 關注
  • 2308 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號