[英]how Can I Use python dictionary to save graph edge weight
我想保存圖形邊緣權重,我的輸入是這樣的
[['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']
為什么? 怎么了? 我怎樣才能解決這個問題?
您的neighbors
是一個類變量,因此它們在實例之間共享。 你應該試試:
class NodeInfo:
def init(self, nodeName):
self.nodeName = nodeName
self.neighbors = {}
請注意,在執行self.nodeName = nodeName
時,您將使用實例成員覆蓋類成員nodeName
(這就是為什么看不到它們共享它的原因)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.