Python 如何消除图形中的重复项
我正在从元组“朋友”列表中构建一个社交图,如下所示:Python 如何消除图形中的重复项,python,graph,networkx,Python,Graph,Networkx,我正在从元组“朋友”列表中构建一个社交图,如下所示: (4118181 {'last_name': 'Belousov', 'first_name': 'Mikhail'}) 下面是函数: def addToGraph (g, start, friends): g.add_nodes_from(friends) egdes_to_add = [(start, entry[0]) for entry in friends] g.add_edges_from(edges_t
(4118181 {'last_name': 'Belousov', 'first_name': 'Mikhail'})
下面是函数:
def addToGraph (g, start, friends):
g.add_nodes_from(friends)
egdes_to_add = [(start, entry[0]) for entry in friends]
g.add_edges_from(edges_to_add)
return g
结果,我得到了一个具有重复数量节点的图,第一个具有属性,来自
g.add_nodes_from(friends)
第二个是来自
g.add_edges_from(edges_to_add)
我阅读了文档,但不知道如何添加具有属性的节点和这些节点之间的边?因此,您的函数在节点
开始
和好友
中的每个节点之间添加边。我尝试了你的代码,没有得到任何重复的节点。下面是我的完整示例(请注意,我纠正了代码中的几个错误)
输出:
Nodes: [3333333, 4118181, 2222222, 1111111]
Edges: [(3333333, 4118181), (4118181, 4118181), (4118181, 2222222), (4118181, 1111111)]
你的节点是整数。你的边是线。添加节点时,它会添加一组名称为整数的节点。当它添加一条边时,它会在字符串
'4118181'
和'340559596'
之间看到一条新边。Python将这些节点视为不同于整数,因此它使用新名称创建新节点,并在它们之间放置一条边
要解决此问题,您需要在添加边之前将字符串转换为整数。您可以发布节点和边的外观(
g.nodes(data=True)
和g.edges(data=True)
)?一半节点:((175472863,'Bulenok','Olga'),{})
,另一半,空副本:('175472863',{})
和边:('4118181','340559596',{})
什么是开始
,节点id?如何调用此函数?start是一个人的id号,我正在研究他的社交关系,start和entry[0]都是节点,实际上,此函数用于构建朋友、朋友的朋友等的全局图。
Nodes: [3333333, 4118181, 2222222, 1111111]
Edges: [(3333333, 4118181), (4118181, 4118181), (4118181, 2222222), (4118181, 1111111)]