Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在networkx2.1、python3中构建将节点映射到其级别的字典?_Python_Python 3.x_Networkx - Fatal编程技术网

如何在networkx2.1、python3中构建将节点映射到其级别的字典?

如何在networkx2.1、python3中构建将节点映射到其级别的字典?,python,python-3.x,networkx,Python,Python 3.x,Networkx,我尝试的是: def comm_deg(G): nodes = G.nodes() A=nx.adj_matrix(G) deg_dict = {} n = len(nodes) degree= A.sum(axis = 1) for i in range(n): deg_dict[nodes[i]] = degree[i,0] return deg_dict 它显示KeyError:0,我发现使用节点[]度[],]都会出现此

我尝试的是:

def comm_deg(G):
    nodes = G.nodes()
    A=nx.adj_matrix(G)
    deg_dict = {}
    n = len(nodes)  
    degree= A.sum(axis = 1)
    for i in range(n):
    deg_dict[nodes[i]] = degree[i,0]
    return deg_dict
它显示KeyError:0,我发现使用
节点[]
度[],]
都会出现此问题

以下是完整的错误消息:

> File "/Users/shaoyupei/Desktop/code/untitled1.py", line 25, in comm_deg
> deg_dict[nodes[i]] = degrees[i,0]

> File "/anaconda3/lib/python3.6/site-packages/networkx/classes/reportviews.py", line 178, in __getitem__
> return self._nodes[n]

> KeyError: 0

所以这里有几个问题

首先,有一种比你现在做的更好的方法来创建dict。 事实上,它基本上已经内置了
G.degree
已经是类似dict的对象,因此
G.degree[node]
将给出
node
的度

如果你真的想让它成为一个dict,最好的方法可能是

deg_dict = dict(G.degree)

现在,让我们看看您得到的错误
G.nodes()
不是一个列表(它也是类似的东西)。因此,当您设置
nodes=G.nodes()
,则
节点
不是一个列表。此处
nodes[0]
尝试返回node
0
的属性(如果您的节点没有任何属性,那么
nodes[node]
将返回一个空dict)。但是(我相信)
0
不是图形
G
中的节点。这就是错误消息的含义

另外,作为一般规则,如果您曾经对范围(n)中的i执行
n=len(x)
,然后执行
,您几乎总是希望对x中的name执行
,或者如果您确实需要索引,您可以对枚举(x)中的i,name执行

所以如果你想用你曾经用过的方法

for i, node in nodes:
    deg_dist[node] = degree[i]

不应该是degree[i]@Serge我尝试degree[i][0]也可以。您可以给出完整的错误消息吗?另外,你能告诉我们你有什么版本的networkx(试试
nx.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?你认为
0
是什么意思?@Joel嗨,Joel,我已经更新了,我使用
degree[I,0]
因为我发现degree是一个列向量,我的networkx是2.1