首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在networkx中设置节点属性不接受dict,返回unhashable类型

在networkx中设置节点属性不接受dict,返回unhashable类型
EN

Stack Overflow用户
提问于 2021-11-23 18:21:30
回答 1查看 37关注 0票数 0

我在这里遵循network_x文档:https://pelegm-networkx.readthedocs.io/en/latest/reference/generated/networkx.classes.function.set_node_attributes.html

上面写着:

代码语言:javascript
复制
>>> G = nx.path_graph(3)
>>> bb = nx.betweenness_centrality(G)  # this is a dictionary
>>> nx.set_node_attributes(G, 'betweenness', bb)

我用degree_centrality做了同样的尝试,我得到了:

代码语言:javascript
复制
>>> 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'

同样适用于:

代码语言:javascript
复制
>>> eigenvector_dict = nx.eigenvector_centrality(G)
>>> nx.set_node_attributes(G, 'eigenvector', eigenvector_dict)

为什么会这样,如何在networkx中正确设置节点属性?

EN

回答 1

Stack Overflow用户

发布于 2021-11-23 22:15:29

this networkx文档中,参数valuesname的顺序不同,这意味着它们交换了"betweenness"bb。我试过了,它起作用了:

代码语言:javascript
复制
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

它也适用于您给出的其他示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70085962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档