假設有一個字典里面可能嵌套了很多層(層數不知),如何對其進行遞回列印,并且顯示出深度來?
字典例如:
Dict_all:{
A1:a1,
A2:a2,
B:{B1:b1,B2:b2}
C:{C1:c1,
C2:{CC2:cc2}}
D:{D1:{D2:{D3:ddd3}}
}
列印時需要顯示為:
1 A1:a1
2 A2:a2,
3 B:
3.1 B1:b1
3.2 B2:b2
4 C
4.1 C1:c1,
4.2 C2:
4.2.1 CC2:cc2
5 D
5.1 D1
5.1.1 D2
5.1.1.1 D3:ddd3
或者用空格顯示遞回深度:
A1:a1
A2:a2,
B:
B1:b1
B2:b2
C:
C1:c1,
C2:
CC2:cc2
D:
D1:
D2:
D3:ddd3
uj5u.com熱心網友回復:
def dictkey(dictdict):
for key in dictdict:
# print(key,dictdict[key])
if type(dictdict[key])==dict:
print(key)
dictkey(dictdict[key])
else:
print(key,dictdict[key])
return
Dict_all={
'A1':'a1',
'A2':'a2',
'B':{'B1':'b1','B2':'b2'},
'C':{'C1':'c1',
'C2':{'CC2':'cc2'}},
'D':{'D1':{'D2':{'D3':'ddd3'}}
}}
#print(type(Dict_all),type(Dict_all)==dict)
dictkey(Dict_all)
uj5u.com熱心網友回復:
沒有完全讀懂,是不是說寫一個遞回函式,然后判斷一下是不是字典,如果是字典繼續執行這個遞回函式,如果不是字典,直接輸出這種uj5u.com熱心網友回復:
def dictkey(dictdict,levels):
for key in dictdict:
# print(key,dictdict[key])
if type(dictdict[key])==dict:
print("\t"*levels,key)
levels+=1
dictkey(dictdict[key],levels)
else:
print("\t"*levels,key,dictdict[key])
return
Dict_all={
'A1':'a1',
'A2':'a2',
'B':{'B1':'b1','B2':'b2'},
'C':{'C1':'c1',
'C2':{'CC2':'cc2'}},
'D':{'D1':{'D2':{'D3':'ddd3'}}
}}
#print(type(Dict_all),type(Dict_all)==dict)
dictkey(Dict_all,0)
A1 a1
A2 a2
B
B1 b1
B2 b2
C
C1 c1
C2
CC2 cc2
D
D1
D2
D3 ddd3
uj5u.com熱心網友回復:
def dictkey(dictdict,levels):
for key in dictdict:
# print(key,dictdict[key])
if type(dictdict[key])==dict:
print("\t"*levels,key)
levels+=1
dictkey(dictdict[key],levels)
levels-=1
else:
print("\t"*levels,key,dictdict[key])
return
Dict_all={
'A1':'a1',
'A2':'a2',
'B':{'B1':'b1','B2':'b2'},
'C':{'C1':'c1',
'C2':{'CC2':'cc2'}},
'D':{'D1':{'D2':{'D3':'ddd3'}}
}}
#print(type(Dict_all),type(Dict_all)==dict)
dictkey(Dict_all,0)
A1 a1
A2 a2
B
B1 b1
B2 b2
C
C1 c1
C2
CC2 cc2
D
D1
D2
D3 ddd3
uj5u.com熱心網友回復:
借用樓上資料:Dict_all={
'A1':'a1',
'A2':'a2',
'B':{'B1':'b1','B2':'b2'},
'C':{'C1':'c1',
'C2':{'CC2':'cc2'}},
'D':{'D1':{'D2':{'D3':'ddd3'}}
}}
def printD(d,parDeep, deep):
for k, v in d.items():
tmp = ('' if parDeep=='' else parDeep) + str(deep)
if isinstance(v, dict) :
print( tmp, f"{k}:")
printD(v,tmp +'.', 1)
else:
print(tmp , f'{k}:{v}')
deep +=1
printD(Dict_all,'', 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247804.html
