將}, "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...