我有一个字典,其中包含具有以下结构的元素
{'task0': {'id': 0, 'successor':[<other elements>]}
每个元素都包含一个唯一的ID和上述元素的后继列表。也可以为空,这意味着此元素没有后继。
例子
a = {'task0': {'node_id': 0, 'successor': [{'task1': {'node_id': 1, 'successor': [{'task2': {'node_id': 2, 'successor': [{'task4': {'node_id': 4, 'successor': []}}, {'task5': {'node_id': 5, 'successor': []}}]}}, {'task3': {'node_id': 3, 'successor': []}}]}}]}}
我想要的是
def get_node_name_by_id(obj, id_search)
示例:def get_node_name_by_id(a,3)=='task3'
def get_parent_id_by_child_id(obj, id_search)
示例:def get_parent_id_by_child_id(a,3)== 1
到目前为止我有什么
def get_node_name_by_id(obj, id_search):
for k,v in obj.iteritems():
if isinstance(v,dict):
if v['node_id'] is id_search:
return k
elif v['successor']:
for e in v['successor']:
return get_node_name_by_id(e, id_search)
->问题:如果我要搜索的ID不在列表的第1个位置,那么我得到None
了结果。
->对于第二个功能,我不知道如何实现
问题
谢谢你的帮助。
根据tobias_k的评论,我发现了一种存储信息的简便方法。因为每个节点对象都有一个唯一的ID,所以仅存储这些ID就足够了。每个子列表的索引是为其定义后继节点的节点的索引。
successor_list = [[successors_node0], [successors_node1], [successors_node2], ..., [successors_nodeN]]
借助ID,我可以访问节点对象(所有节点对象都存储在列表中)以访问对象属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句