我想保存图形边缘权重 我的输入是这样的
[['A', 'B', '5']]
这意味着我们从'A'到'B'的边缘重量为5
我的代码是
def inputFormatter(array):
Nodes={}
for p in array:
a=p[0]
b=p[1]
value=p[2]
if(a not in Nodes):
Nodes[a]=NodeInfo(a)
if(b not in Nodes[a].neighbors):
Nodes[a].neighbors[b]=value
if(b not in Nodes):
Nodes[b]=NodeInfo(b)
if(a not in Nodes[b].neighbors):
Nodes[b].neighbors[a]=value
return Nodes
我的NodeInfo类是
class NodeInfo:
neighbors={}
nodeName=""
def __init__(self, nodeName):
self.nodeName=nodeName
但在使用此代码打印邻居密钥
for node in Nodes:
print node.nodeName +"\t"+ str(node.neighbors.keys())
我看到了这个
A ['A', 'B']
B ['A', 'B']
为什么呢? 怎么了? 我该如何解决这个问题?
答案 0 :(得分:2)
您的neighbors
是一个类变量,因此它们在实例之间共享。你应该试试:
class NodeInfo:
def init(self, nodeName):
self.nodeName = nodeName
self.neighbors = {}
请注意,当您执行nodeName
时,您将使用实例成员覆盖类成员self.nodeName = nodeName
(这就是为什么您没有看到他们共享它的原因)。