如何向节点添加属性?
How to add a property to a node?
我一直在尝试向我正在创建的这个节点添加一个类似于 属性 的名称,但收到错误消息。
error
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id,'name' = tweeter_name)
G.add_node(interact_id,'name' = interact_name)
这是我得到的错误。
error message
File "<ipython-input-31-55b9aecd990d>", line 28
G.add_node(tweeter_id,'name' = tweeter_name)
^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
作为参考,这是完整的代码:
import networkx as nx
# define an empty Directed Graph
# A directed graph is a graph where edges have a direction
# in our case the edges goes from user that sent the tweet to
# the user with whom they interacted (retweeted, mentioned or quoted)
#g = nx.Graph()
G = nx.DiGraph()
# loop over all the tweets and add edges if the tweet include some interactions
for tweet in tweet_list:
# find all influencers in the tweet
tweeter, interactions = getAllInteractions(tweet)
tweeter_id, tweeter_name = tweeter
tweet_id = getTweetID(tweet)
# add an edge to the Graph for each influencer
for interaction in interactions:
interact_id, interact_name = interaction
# add edges between the two user ids
# this will create new nodes if the nodes are not already in the network
# we also add an attribute the to edge equal to the id of the tweet
G.add_edge(tweeter_id, interact_id, tweet_id=tweet_id)
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id, tweeter_name)
G.add_node(interact_id, interact_name)
这是因为 add_node
是一个函数。而且你不能为函数赋值。
当你尝试时,你正在做:
G.add_node(tweeter_id, 'name') = tweeter_name
UPD:由于您使用的是 networkx 库,因此您可以查看其 add_node 函数的文档 here
我相信你想做的是:
G.add_node(tweeter_id, attr_dict={'name': tweeter_name})
或作为提比伯人。 M指出,你也可以这样做:
G.add_node(tweeter_id, name=tweeter_name)
而不是你的
G.add_node(tweeter_id,'name') = tweeter_name
G.add_node(interact_id,'name') = interact_name
使用
G.add_node(tweeter_id, tweeter_name)
G.add_node(interact_id, interact_name)
(假设您已将一些字符串分配给变量 tweeter_name
和 interact_name
)。
您可以从 the documentation
中了解到
Use keywords set/change node attributes:
>>> G.add_node(1,size=10)
>>> G.add_node(3,weight=0.4,UTM=('13S',382871,3972649))
因此使用关键字参数 name
来定义属性。
(注意:没有引号,否则它将是 str
并且会导致 SyntaxError
你所面对的,因为它是对字符串文字的赋值)
做这样的事情:
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id, name = tweeter_name)
G.add_node(interact_id, name = interact_name)
它应该可以工作
我一直在尝试向我正在创建的这个节点添加一个类似于 属性 的名称,但收到错误消息。 error
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id,'name' = tweeter_name)
G.add_node(interact_id,'name' = interact_name)
这是我得到的错误。 error message
File "<ipython-input-31-55b9aecd990d>", line 28
G.add_node(tweeter_id,'name' = tweeter_name)
^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
作为参考,这是完整的代码:
import networkx as nx
# define an empty Directed Graph
# A directed graph is a graph where edges have a direction
# in our case the edges goes from user that sent the tweet to
# the user with whom they interacted (retweeted, mentioned or quoted)
#g = nx.Graph()
G = nx.DiGraph()
# loop over all the tweets and add edges if the tweet include some interactions
for tweet in tweet_list:
# find all influencers in the tweet
tweeter, interactions = getAllInteractions(tweet)
tweeter_id, tweeter_name = tweeter
tweet_id = getTweetID(tweet)
# add an edge to the Graph for each influencer
for interaction in interactions:
interact_id, interact_name = interaction
# add edges between the two user ids
# this will create new nodes if the nodes are not already in the network
# we also add an attribute the to edge equal to the id of the tweet
G.add_edge(tweeter_id, interact_id, tweet_id=tweet_id)
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id, tweeter_name)
G.add_node(interact_id, interact_name)
这是因为 add_node
是一个函数。而且你不能为函数赋值。
当你尝试时,你正在做:
G.add_node(tweeter_id, 'name') = tweeter_name
UPD:由于您使用的是 networkx 库,因此您可以查看其 add_node 函数的文档 here
我相信你想做的是:
G.add_node(tweeter_id, attr_dict={'name': tweeter_name})
或作为提比伯人。 M指出,你也可以这样做:
G.add_node(tweeter_id, name=tweeter_name)
而不是你的
G.add_node(tweeter_id,'name') = tweeter_name
G.add_node(interact_id,'name') = interact_name
使用
G.add_node(tweeter_id, tweeter_name)
G.add_node(interact_id, interact_name)
(假设您已将一些字符串分配给变量 tweeter_name
和 interact_name
)。
您可以从 the documentation
中了解到Use keywords set/change node attributes:
>>> G.add_node(1,size=10) >>> G.add_node(3,weight=0.4,UTM=('13S',382871,3972649))
因此使用关键字参数 name
来定义属性。
(注意:没有引号,否则它将是 str
并且会导致 SyntaxError
你所面对的,因为它是对字符串文字的赋值)
做这样的事情:
# add name as a property to each node
# with networkX each node is a dictionary
G.add_node(tweeter_id, name = tweeter_name)
G.add_node(interact_id, name = interact_name)
它应该可以工作