#請益 #Python 巢狀dict過濾請教

小妹有一個多層次的dict想要進行過濾,主要過濾的數據儲存於最後一個階層的Record data中。 如果用迴圈遞歸,會花太多效能跟時間,雖然已經寫出來了考量之後維護可讀性,還是希望有辦法能在一開始讀取時就進行過濾,想請教大神做法‎|•'-'•) ✧
megapx
有看過有人做lambda跟filter,但因為跟lambda真的太不熟・ࡇ・,最多也只有看過判定第二階層的數字案例,但我Record data為一組array,並且只需要針對Record data[0,-1]進行判定。(言下之意我努力踹過了啊失敗了阿我看了三個小時的教學啊嗚嗚嗚嗚) 最終目標為把已經是None的dict全部捨棄(往上至階層2、3),但如果難以達成希望至少能將不符合的案例於階層4過濾~ 真的想了好久了嗚嗚嗚拜託各路大神啊我不想要真的疊上5層迴圈阿嗚嗚嗚嗚就算疊5層至少也教我寫成單行迴圈阿嗚嗚嗚嗚嗚一整個以為自己在寫八股文阿嗚嗚嗚嗚。゚ヽ(゚´Д`)ノ゚。
留言
個人建議附上你的程式碼以及dict的資料,以及最後預期的結果(放到github gist之類的),如果有涉及機密就想辦法去識別化,然後盡量學leetcode那種題目的描述方式。 我似乎能理解你在講什麼,但是不太能確定,我找交大大佬朋友來看也是有類似的感覺。 「最終目標為把已經是None的dict全部捨棄(往上至階層2、3),但如果難以達成希望至少能將不符合的案例於階層4過濾~」 - 這個是什麼意思,我真的不太確定。 妳是要把原本的nested dict除掉一些無意義資料(None),最後是會修改到那個nested dict,還是要過濾出一些自己要的資料到list中? 如果是「過濾出一些自己要的資料到list中」就有大概有下面兩種做法 第一種就是nested dict當作Tree,用BFS(breadth first search)尋訪,遇到哪一層不符合自己想要的結果就忽略掉,其他就繼續往下尋訪,直到最後一層,就將沒被忽略掉的節點加到最終過濾出來的list中。 第二種就是flatten nested dict,然後直接過濾,可能可讀性比較好?
B3(已編輯)