Python 對字典進行扁平化處理

2021-10-08 21:04:43 字數 1642 閱讀 9867

}, "e": }},變成這樣的形式,將每一條路徑與分支結點對應上

利用遞迴函式處理

每次判斷k,v鍵值對的value,如果value為字典,那麼繼續遞迴處理,並且對新得到的key進行改造,追加到末尾。如果value為整數,則停止遞迴。在新的字典上加上新的k,v

最後返回新形成的字典

def

flat_map

(src, target=

none

, prefix="")

:if target is

none

: target =

for k, v in src.items():

iftype

(v)is

dict

: flat_map(v, target, prefix + k +

".")

else

: target[prefix+k]

= v return target

if __name__ ==

"__main__"

: dict1 =},

"e":}}

result_dict = flat_map(dict1)

print

(result_dict)

此種方法對外顯示了三個形參(封裝不夠隱蔽),最後完成時,對新形成的字典進行返回

def

flat_map_plus

(src)

:def

_flat_map_plus

(src, target=

none

,prefix="")

:if target is

none

: target =

for k, v in src.items():

iftype

(v)is

dict

: _flat_map_plus(v, target, prefix+k+

".")

else

: target[prefix+k]

= v return target

target = _flat_map_plus(src)

return target

if __name__ ==

"__main__"

: dict1 =},

"e":}}

new_result = flat_map_plus(dict1)

print

(new_result)

此種方法只對外提供了傳入字典的引數,其餘的引數均封裝到了函式內部,提高了安全性

陣列的扁平化處理

陣列的扁平化處理是將多維陣列轉換成一維陣列的形式。比如陣列 1,2,3,4,5 null,6,7 8 9 扁平化處理後 1,2,3,4,5,null,6,7,8,9 下面這些方法可以實現陣列的扁平化。var originarr 1 2,3 4,5 null,6,7 8 9 1 迴圈判斷 functi...

js陣列扁平化處理

陣列扁平化就是將乙個多維陣列轉換為乙個一維陣列 實現基本方式 1 對陣列的每一項進行遍歷。2 判斷該項是否是陣列。3 如果該項不是陣列則將其直接放進新陣列。4 是陣列則回到1,繼續迭代。5 當陣列遍歷完成,返回這個新陣列。array.prototype.flatten function else r...

JS 多維陣列扁平化 處理

多維陣列扁平化 var arr 1,2,3,4,5,6,7 9,10,11 1 方法一 迴圈陣列 遞迴呼叫 function steamroller arr return arr console.log steamroller2 arr 3 方法三 reduce方法 當陣列中還有陣列的話,遞迴呼叫s...