У меня в настоящее время есть таблица данных.Каждая строка соответствует активу, причем столбцы представляют разные поля об этом активе (например, номер детали, местоположение и т. Д.). Мне интересны два столбца:
- Родительский актив и
- Тег актива.
Родительский актив содержит тег актива родительского актива.
Например, скажем, у нас есть актив A (с тегом актива) с родительским активомактив B (с тегом актива b).Для актива A столбец родительского актива будет b (тег актива B).Это означает, что актив A связан (возможно, часть аппаратного обеспечения, обработанного в B) с активом B. Однако актив A также может быть родительским активом для актива C. Следовательно, структура выглядит как B -> A -> C.Однако A также может быть родительским для D. Таким образом, структура может выглядеть как B -> A -> C, D или что-то еще более сложное.Надеюсь, это даст вам представление о деревьях, которые я хотел бы сгенерировать из моей таблицы данных.
Я не уверен, как бы я манипулировал данными в структуре данных, представляющей каждое дерево.В настоящее время у меня есть класс asset
, но у меня возникают проблемы с циклическим просмотром данных и добавлением детей или родителей, поскольку неизвестно, сколько уровней родительско-дочерних отношений существует между активами.
Ядумая что-то вроде этого (с кодом, который также не предоставляется), но это не работает, потому что в конечном итоге это только пойдут родители-дети-внуки, но может быть больше уровней.
class asset:
def __init__(self, tag, children, parent):
self.children = children
self.tag = tag
self.parent = parent
#asset list is populated of assets with only one level of children
#could be more than one child, but only children - no grandchildren
final_tree = {}
for asset in asset_list:
dummy_asset = asset
final_tree[asset.tag] = {asset.children}
while x != 1:
for child in dummy_asset.children:
if child.children != []:
final_tree[dummy_asset.tag] = child.children
dummy_asset = child.children
else:
x = 1
У кого-нибудь естьдругие идеи?