我想访问并存储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
我在这做什么错? 有人可以建议我改变。 感谢
答案 0 :(得分:1)
G[node]
是一本字典。 Iterating over a dictionary gives you the keys of that dictionary,在本例中为整数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}
答案 1 :(得分:0)
我在这里弄清楚我做错了什么,我没有使用.iteritems()
for node in vis:
for a,b in G[node].iteritems():
print a,b