Python 为生成的图的节点提供属性
我不熟悉Python和NetworkX,我正在尝试将字典中的属性赋予使用图形生成器创建的网络节点。以下是我的示例代码:Python 为生成的图的节点提供属性,python,networkx,graph-theory,Python,Networkx,Graph Theory,我不熟悉Python和NetworkX,我正在尝试将字典中的属性赋予使用图形生成器创建的网络节点。以下是我的示例代码: g = nx.watts_strogatz_graph(5,4,0.1) name_dict = { 0: "Alice", 1: "Bob", 2: "Carl", 3: "Diana", 4: "Elain", } nx.set_node_attributes(g, name, name_dict) 但是,我得到了以下错误: nx.set_
g = nx.watts_strogatz_graph(5,4,0.1)
name_dict = {
0: "Alice",
1: "Bob",
2: "Carl",
3: "Diana",
4: "Elain",
}
nx.set_node_attributes(g, name, name_dict)
但是,我得到了以下错误:
nx.set_node_attributes(g, name, name_dict)
NameError: name 'name' is not defined
如何定义字典中给定值的属性(“name”)的名称
名称错误:未定义名称“name”
出现此错误是因为没有名为name
的变量
让我们看看我通过谷歌搜索“networkx设置节点属性”找到的:
设置节点属性(G,值,名称=无)[源]
根据给定值或值字典设置节点属性
警告
参数值和名称的调用顺序在v1.x和v2.x之间切换
参数
G(网络X图)
值(标量值,dict-like)–节点属性应设置为的值。如果值不是字典,则将其视为单个属性值,然后应用于G中的每个节点。这意味着,如果提供可变对象(如列表),则对该对象的更新将反映在每个节点的节点属性中。属性名将为name
如果值是dict或dict的dict,则节点应将其设置为属性值或用于更新节点属性的属性键/值对dict
名称(字符串(可选,默认值=无))–如果值是标量,则要设置的节点属性的名称
这告诉我们dictionary必须是要传入的第二个参数,而不是第三个参数
它还告诉我们,name
参数是一个可选字符串
综上所述,您可以通过以下方式修复代码:
nx.set_node_attributes(g, name_dict)
现在将运行此操作,但它将省略属性的名称。如果希望属性具有名称“name”
,则可以传递字符串作为第三个参数:
nx.set_node_attributes(g, name_dict, 'name')
TLDR;您需要修正参数的顺序,并将'name'
用引号括起来,使其成为字符串而不是变量