首页 > 解决方案 > 从与初始循环相同的循环中重命名节点

问题描述

我有一些有向图数据,其中每一行代表一条边。我需要使用 python 将此类图形数据转换为树数据。例如我的样子是这样的:

[{'source': 'a','target': 'b'},
 {'source': 'b','target': 'a'}
 {'source': 'a','target': 'c'}
 {'source': 'c','target': 'd'}
 {'source': 'd','target': 'a'}
 {'source': 'z','target': 'a'}]

这里的第一个节点是'a'。由于“b”与“a”有边,它类似于一个循环,在这种情况下,我想将它重命名为“a-prime”。'a' 可以与 'c' 有一个边缘,'c' 有一个与 'd' 的边缘,'d' 可以发送回 'a' 甚至 'c' 并且再次有一个循环,所以最后一个“d”将被重命名为“d-prime”。最后一种情况是当某个随机节点看起来像带有“a”的“z”时,但是那个很好,因为它不像一个循环。这是我尝试过的:

    tmp =[]
    for x in data:
        tmp.append(x['source'])
        if x['target'] in tmp:
            x['target'] = x['target'] + '-prime'

但我意识到这只能处理第一种情况,然后我就卡住了。我需要以某种方式追踪每个周期..

标签: pythonalgorithm

解决方案


推荐阅读