簡體   English   中英

如何使用python字典保存圖形邊緣權重

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM