我在这里遵循network_x文档:https://pelegm-networkx.readthedocs.io/en/latest/reference/generated/networkx.classes.function.set_node_attributes.html
上面写着:
>>> G = nx.path_graph(3)
>>> bb = nx.betweenness_centrality(G) # this is a dictionary
>>> nx.set_node_attributes(G, 'betweenness', bb)我用degree_centrality做了同样的尝试,我得到了:
>>> degree_centrality_dict = nx.degree_centrality(G)
>>> nx.set_node_attributes(G, 'degree_centrality', degree_centrality_dict)
683 except AttributeError: # `values` is a constant
684 for n in G:
--> 685 G.nodes[n][name] = values
686 else: # `values` must be dict of dict
687 for n, d in values.items():
TypeError: unhashable type: 'dict'同样适用于:
>>> eigenvector_dict = nx.eigenvector_centrality(G)
>>> nx.set_node_attributes(G, 'eigenvector', eigenvector_dict)为什么会这样,如何在networkx中正确设置节点属性?
发布于 2021-11-23 22:15:29
在this networkx文档中,参数values和name的顺序不同,这意味着它们交换了"betweenness"和bb。我试过了,它起作用了:
import networkx as nx
G = nx.path_graph(3)
bb = nx.betweenness_centrality(G)
nx.set_node_attributes(G, bb, "betweenness") # this is a dictionary
print(G.nodes[1]["betweenness"])这段代码打印1.0。
它也适用于您给出的其他示例。
https://stackoverflow.com/questions/70085962
复制相似问题