我想弄清楚如何將表示分層數據的錶轉換回代碼。如何從平面關係表中重新組合分層數據?
在該表中列示:
| id | parent_id | name |
|----|-----------|------|
| 1 | null | foo |
| 2 | 1 | bar |
| 3 | 1 | baz |
| 4 | 3 | bif |
| 5 | 1 | zip |
etc...
使得重建的時候,它看起來像這樣:
foo
|-bar
|-baz
|-bif
|-zip
我苦苦尋找建立這個非可怕的方式在內存中列出。
基本上,我剛纔所說的解決方案只是強制我的方式。例如(在僞Python中)
output = {}
for item in table:
parent = get_parent(item)
if parent:
if parent not in output:
output[parent] = []
output[parent_item].append(item)
但是,這隻會讓我感到一半。它正確地把孩子貼在他們的直系親屬身上,但只有一個等級。這些數據大概有3層,所以我想我不得不對它迭代,直到找不到更多的父對象。
只要說,我的解決方案是壞的,脆弱的,我不知道還有什麼要做。什麼是解決這個問題的正確方法?