首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >后续:使用NetworkX在Python中添加两个独立图的边缘连接节点

后续:使用NetworkX在Python中添加两个独立图的边缘连接节点
EN

Stack Overflow用户
提问于 2018-08-17 14:10:05
回答 1查看 589关注 0票数 1

我对C++相当精通,但我同时也在学习python、NetworkX和有关pythonic代码的知识。在阅读了各种网站和参考资料后,我的问题与this question相同。不同的是,我正在采取的方法来执行我的任务。请注意,这个问题是关于添加一个边缘,而不是drawing。我有一个图(SAR),它的节点也是图(船和漂流图),

代码语言:javascript
复制
import networkx as nx
import math

# User Inputs
Num_Adrift = 4

# Cluster Definition
Boat = nx.Graph(P_Weight=7000,P_Vol=9*29*60,P_MPG=1,P_Speed=20,P_Crew_Lim=5,P_Asset=1,P_Count=1)
Adrift = nx.Graph(P_Distance=2,P_Time_Lim=30,P_DriftSpeed=1,P_Asset=0,P_Count=Num_Adrift)
SAR = nx.Graph(P_Success = 0)

# SAR Graph
SAR.add_node(Boat)
SAR.add_node(Adrift)

这就是对上述问题的评论中所采用的方法。我可以把船和漂流连接起来,

代码语言:javascript
复制
SAR.add_edge(Boat,Adrift,weight=1)

假设Boat有一个节点:

代码语言:javascript
复制
Boat.add_node("embark",P_Material=1,C_supply=1)

漂流有节点,

代码语言:javascript
复制
Adrift.add_node("embark",P_lock=1,P_Material=1,C_supply=0)

它们具有相同的名称(目的是使节点连接和以后的计算自动化)。

问题1:为什么这个语法不能工作,以及如何修复它?是否因为它们本身不是SAR内的节点?

代码语言:javascript
复制
SAR.add_edge(Boat.node["embark"],Adrift.node["embark"],weight=1)

问题2:是否能够区分Boat.node“登船”和Adrift.node“登船”,还是认为我是在尝试从一个节点到它自己?

我得到的错误是:

代码语言:javascript
复制
---> 76                         SAR.add_edge(Boat.node["embark"],Adrift.node["embark"],weight=1) #<--- this part of code = problem :(

/anaconda3/lib/python3.6/site-packages/networkx/classes/graph.py in add_edge(self, u_of_edge, v_of_edge, **attr)
    873         u, v = u_of_edge, v_of_edge
    874         # add nodes
--> 875         if u not in self._node:
    876             self._adj[u] = self.adjlist_inner_dict_factory()
    877             self._node[u] = {}

TypeError: unhashable type: 'dict'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 15:04:14

TypeError:难以理解的类型:“dict”

NetworkX使用python作为数据结构。因此,当您添加一个节点时,节点就是dict中给定值的key,例如,它的边缘列表。

对象要成为键,就必须是唯一的。要比较键之间的唯一性,对象必须是可选的。

由于字典是不可理解的,所以不能使用字典作为键,因此不能使用字典作为节点。

你所能做的就是将整数映射到你的字典中,并将它存储在另一本字典中。然后,可以将整数作为节点,并从另一个dict获取实际值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51897238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档