字典深層遞迴遍歷之葉子元素換值

2022-09-22 08:27:18 字數 1345 閱讀 1406

材料:複雜(多維度)字典組成的jsona內有n個葉子元素(葉子結點),現有一維列表lista(元素以字典形式展現)

任務:遍歷lista中元素屬性名是否在jsona的葉子結點有相同屬性名?如果有,則用lista中元素的值替換掉jsona中同名元素的值;如果沒有,不影響最終結果。直到lista所有元素遍歷完成。

**:

1

import

copy

2from collections import

defaultdict

3 dicta =,10"

b": ,14

"imei":

24}25}

2627 dictd=

2829

defquantizejsontemplet(targetdict,sourcelist_dict):

30 copytargetdict =copy.deepcopy(targetdict)

31def

recursionreplace(copytargetdict,serchkey,newvalue):

32for k,v in

copytargetdict.items():

33if isinstance(v,dict) : #

值是字典元素,則遞迴處理

34recursionreplace(v,serchkey,newvalue)

35else:36

if k ==serchkey:37#

print ('-----find it:',k)

38 copytargetdict[k] = newvalue #

對目標字典元素的值重寫

39return

copytargetdict

4041

for k,v in

dictd.items():

42recursionreplace(copytargetdict,k,v)

43return

targetdict,copytargetdict

44 result =quantizejsontemplet(dicta,dictd)

45print (result[0],'

\n\n

',result[1])

複雜字典遍歷換值

輸出結果:

, '

b': , '

imei

': }}

, 'b': , '

imei

': }}

[finished

in 0.1s]

view code