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