gpt4 book ai didi

python - 仅当不存在具有相同属性的节点时才将节点添加到网络 x

转载 作者:太空宇宙 更新时间:2023-11-04 03:16:26 24 4
gpt4 key购买 nike

一般来说,我对 networkx 和绘图还很陌生,希望得到您的帮助。

我正在设计一个图表,其中每个节点都有一个 node_id(这只是我为制作图表而迭代的点数)和五个属性。

G.add_node(node_id)
G[id]['Coord1'] = 3
G[id]['Coord2'] = 7
G[id]['Coord3'] = None
G[id]['Coord4'] = None
G[id]['Coord5'] = None

所以现在我想考虑添加一个带有一些坐标的新节点。

现在,在向我的图表添加新节点之前,我想检查是否还没有一个节点具有与我打算添加的节点相同的属性(坐标之一)。

如果已经存在一个具有共享坐标的节点,那么我不会添加新节点,而只是对现有节点进行一些更改。

我能想到的唯一方法是遍历图中所有现有节点,并检查其中一个属性是否与我打算添加的节点相同。例如

find_node = [attrdict for n,attrdict in G.node.items() if attrdict['coord1'] == tempcoord ]    

其中 tempcoord 是我打算添加的节点上感兴趣的坐标。

每次我想添加节点以检查所有现有节点时,这样做显然效率很低,我的问题是:有没有更好的方法?

我知道 networkx 不会添加具有相同 ID 的新节点,但不会扩展到共享相同属性的节点,对吗?

或者,是否最好使用所有这些“重复”节点构建图形,然后在添加所有节点后将具有某些共享属性的所有节点压缩为一个节点?

抱歉,我的解释有些费解,我希望它能说明一些道理。

最佳答案

创建一个包含所有观察到的节点属性的集合。当您想添加具有给定属性的节点时,请检查该属性是否存在。如果是,则什么也不做,如果不是,则添加它并将该属性放入集合中。如果在代码的不同部分完成,可能值得定义一个函数来执行这些步骤。

seen_attributes = set()

# code here adding nodes

node = node_to_add
attribute = attribute_of_node

if attribute not in seen_attributes:
G.add_node(node, coord=attribute)
seen.add(attribute)

关于python - 仅当不存在具有相同属性的节点时才将节点添加到网络 x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com