簡體   English   中英

在python中訪問networkx圖的節點

[英]Accessing nodes of networkx graph in python

我想訪問和存儲networkx圖的節點,然后對其進行進一步處理。 我有以下代碼:

for node in vis:    
    for a,b in G[node]:
        print a,b

這段代碼給出了以下錯誤:追溯(最近一次呼叫過去):[1]

  File "C:\Users\Mrinal\workspace\algo_asgn1\prims.py", line 29, in <module>
    for a,b in G[node]:
TypeError: 'int' object is not iterable

而當我寫:

for node in vis:
        print G[node]

我得到以下輸出,我想是字典,其中鍵為目標節點,連接權重為值。

{2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}
{2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}
{2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}
{2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}
{2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}

我的圖表包含以下數據:

1 2 5
1 3 2
2 3 4
2 4 6
1 4 2

我在這里犯什么錯誤? 有人可以建議我更改。 謝謝

G[node]是字典。 遍歷字典將為您提供該字典的鍵 ,在這種情況下,它們是整數2,3,4 因此,如果運行此代碼段,您將獲得以下輸出:

>>> for a in {2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}:
...     print a
... 
2
3
4

您遇到的問題源於您試圖迭代兩個變量( for a, b in x的事實,其中x是整數,因此無法拆分為兩個單獨的變量。 相反,只需使用單個變量即可獲取節點,例如

>>> node = {2: {'weight': 5}, 3: {'weight': 2}, 4: {'weight': 2}}
>>> for a in node:
...     print a, node[a]
... 
2 {'weight': 5}
3 {'weight': 2}
4 {'weight': 2}

我發現我在這里做錯了我沒有使用.iteritems()的問題

for node in vis:    
    for a,b in G[node].iteritems():
        print a,b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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