簡體   English   中英

從元組列表創建樹

[英]Creating a tree from a list of tuples

我目前似乎是瞎子,所以我需要在這里問。 我想對看起來像這樣的元組列表進行排序

(id, parent_id, value)

這樣就可以將樹表示為樹節點列表的扁平列表。

例如輸入

(1, None, '...')
(3, 2', '...')
(2, 1, '...')
(4, 1, '...')
(5, 2, '...')
(6, None, '...')

之后應該這樣排序

(1, None, '...')
(2, 1, '...')
(3, 2', '...')
(5, 2, '...')
(4, 1, '...')
(6, None, '...')

任何提示將不勝感激。 提前致謝。

Python從左到右對元組進行排序,因此,如果您排列元組,則第一個排序鍵為第一項,依此類推,這將相當有效。

從您描述的內容來看,從元組列表到樹的映射不清楚。 請把它畫出來,或者更徹底地解釋它。 例如,您的示例似乎是:

樹狀圖
(來源: sabi.net

如果您有兩個沒有父節點的節點,那么它更像是一棵森林,而不是一棵樹。 您想用樹代表什么? 在這種情況下,“排序”是什么意思?

我不確定我是否完全按照您的實際意圖進行操作,但是如果您有一個森林作為節點列表,那么您是否只能閱讀並構建樹結構,然后將其寫成面包-遍歷所有樹木? 避免這種情況的任何特殊原因?

奧利弗(Oliver),如果我理解正確,我認為您可以(a)從數據庫中將所有元組檢索到字典或列表中,然后構造樹,或者(b)在檢索元組時使用ORDER BY子句,以便它們按照將它們添加到樹中的順序。

如果可以在您的應用程序中對樹進行更改,然后將其傳播到數據庫,那么我會選擇a,但是如果更改總是在數據庫插入,更新或刪除時進行,並且除這些以外,您的樹是只讀的,則選項b應該更快並且需要更少的資源。

羅蘭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM