我有一個存儲爲點的矩形列表。目前,數據看起來是這樣的:用於存儲嵌套框的數據結構?
boxes = [{'p1': (0,0), 'p2': (100,20)},
{'p1': (5,5), 'p2': (15,15)},
{'p1': (20,5), 'p2': (30,15)},
{'p1': (35,5), 'p2': (45,15)},
{'p1': (70,5), 'p2': (80,15)}]
我也有,如果一個矩形被包含在另一個測試一個基本功能:
def isChild(b1,b2):
return (b1 != b2 and
(b1['p2'][0]-b1['p1'][0] * b1['p2'][1]-b1['p1'][1]) > (b2['p2'][0]-b2['p1'][0] * b2['p2'][1]-b2['p1'][1]) and
b1['p1'][0] < b2['p2'][0] and
b1['p2'][0] > b2['p1'][0] and
b1['p1'][1] < b2['p2'][1] and
b1['p2'][1] > b2['p1'][1])
我想用一組拉閘矩形和他們的孩子,但我不知道我應該如何存儲它們。我在想這樣的事情:
[{'p1': (0,0),
'p2': (100,20),
'children': [{'p1': (5,5), 'p2': (15,15)},
{'p1': (20,5), 'p2': (30,15)},
{'p1': (35,5), 'p2': (45,15)},
{'p1': (70,5), 'p2': (80,15)}]}]
這是因爲這些框表示網頁上的元素。數據結構是爲了產生基本的標記,所以上面的結構將被清盤是這樣的:
<div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
- 是源/目標數據結構非常適合呢?如果不是,那是什麼?
- 我如何才能從源頭獲得目標?
- 一位朋友建議使用r-trees。這有意義嗎?
這似乎很適合OO。使用類或甚至命名的元組將大大簡化你的代碼。根據您的目標或數據大小,您可以從這裏轉到更復雜的算法。 – jsz
你想對這些數據執行哪些操作? – Lazin
除了獲取數據並將其表示爲上面的最後一個代碼片段之外,我希望能夠移動框和他們的孩子,即。將框A放在框B中,然後將框移動到框C中。所以,我猜想插入/刪除/排序。 –