當前位置:成語大全網 - 漢語詞典 - python3如何解析多層嵌套字典?打開看詳情。

python3如何解析多層嵌套字典?打開看詳情。

#看代碼。代碼粘貼時沒有格式。根據圖片調整壹下。圖片是核心部分。

simple_dict?=?{

Large_dict?:?{'middle_dict1 '?:?{'small_dict1 '?:?1?,

small_dict2 '?:?2},

middle_dict2 '?:?{'small_dict3 '?:?3?,

small_dict4 '?:?4,

small _ dict 5 ':{ ' small _ dict 10 '?:?1?,

small _ dict 22’?:?3},

},

}

}

#?需求分析:?從嵌套字典中,找到值為3的路徑關系。

#?簡化模型:從值3?遞歸到上層?鑰匙?遞歸過程保存當前遞歸路徑和當前層。

#?1.找出字典1中有多少層* * *:

數數?=?0

路徑?=?''#?設置path的全局變量。

結果?=?[]#?記錄結論

def?get_count(字典_測試):

全球?計數#?聲明每次遞歸都會改變全局變量。

全球?路徑#?拼接時間表,妳的路

全球?結果#?記錄結果

為了什麽?我?在?字典測試:

如果?type(dict_test[i])。__name__?=='dict '?:

#?如果是字典,繼續向下展開,即進行遞歸:

如果?數數?==?0:?#?增加判斷力?淘汰第壹個?& lt-?出現,邏輯問題

路徑?=?路徑+?我

否則:

路徑?=?路徑?+?& lt-'?+?我

數數?+=?1#?記錄層數

get_count(字典測試[i])

否則:

嘗試:

#?如果不是字典呢?它是壹個鍵值對,查詢值是否為3。目前I包含兩個內容,壹個是key,壹個是value。

如果?dict_test[i]?==?3:

#?發現價值?=3?的價值

Result.append(f "路徑是:?%s,在%d層"?%?(路徑?+?& lt-'?+?我,?計數))

除了?例外?asresult:#?雖然字典限制了寫法,為了增加魯棒性?在這個位置使用Try指令是為了避免類型錯誤。

打印(結果)

繼續

如果?__name__?==?__main__ ':

get_count(simple_dict)#?執行遞歸函數

[print(str(i?+?1)?+?':'?+?j)?為了什麽?我,?j?在?枚舉(結果)]#?打印結果

'''

結果:?

1:路徑是:?Large _ dict & lt-middle _ dict 1 & lt;-middle _ dict 2 & lt;-small_dict3,在3樓。

2:路徑是:?Large _ dict & lt-middle _ dict 1 & lt;-middle _ dict 2 & lt;-small _ dict 5 & lt;-small_dict22,4樓。

'''