2024-06-01 12:02:12 发布
网友
我从元组的朋友列表中构建一个社交图,如下所示:
(4118181 {'last_name': 'Belousov', 'first_name': 'Mikhail'})
函数如下:
因此,我得到了一个具有重复数量节点的图,第一个具有属性,来自
g.add_nodes_from(friends)
第二个是从
g.add_edges_from(edges_to_add)
我阅读了这些文档,但是不明白,如何在这些节点之间添加具有属性和边的节点?在
你的节点是整数。你的边缘是弦。当您添加节点时,它会添加一组名称为整数的节点。当它添加一个边时,它会在字符串'4118181'和'340559596'之间看到一个新的边。Python认为这些节点与整数不同,因此它用新名称创建新节点,并在它们之间加上一条边。在
'4118181'
'340559596'
要解决这个问题,需要在添加边之前将字符串转换为整数。在
因此,您的函数在节点start和friends中的每个节点之间添加边。我试过你的代码,没有发现任何重复的节点。这是我的完整示例(请注意,我更正了代码中的几个错误)。在
start
friends
import networkx as nx friends = [ (4118181, {'last_name': 'Belousov', 'first_name': 'Mikhail'}), (1111111, {'last_name': 'A', 'first_name': 'B'}), (2222222, {'last_name': 'C', 'first_name': 'D'}), (3333333, {'last_name': 'E', 'first_name': 'F'}) ] def addToGraph(g, start, friends): g.add_nodes_from(friends) edges_to_add = [(start, entry[0]) for entry in friends] g.add_edges_from(edges_to_add) G = nx.Graph() addToGraph(G, 4118181, friends) print('Nodes:', G.nodes()) print('Edges:', G.edges())
输出:
你的节点是整数。你的边缘是弦。当您添加节点时,它会添加一组名称为整数的节点。当它添加一个边时,它会在字符串
'4118181'
和'340559596'
之间看到一个新的边。Python认为这些节点与整数不同,因此它用新名称创建新节点,并在它们之间加上一条边。在要解决这个问题,需要在添加边之前将字符串转换为整数。在
因此,您的函数在节点
start
和friends
中的每个节点之间添加边。我试过你的代码,没有发现任何重复的节点。这是我的完整示例(请注意,我更正了代码中的几个错误)。在输出:
^{pr2}$相关问题 更多 >
编程相关推荐