我正在从这样的元组'朋友'列表中构建社交图:
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)
,第二个来自
read()
我阅读了文档,但无法弄清楚,如何在这些节点之间添加属性和边缘的节点?
答案 0 :(得分:0)
因此,您的函数会在节点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())
中的每个节点之间添加边。我尝试了你的代码,但我没有得到任何重复的节点。这是我的完整示例(请注意,我更正了代码中的一些错误。)
Nodes: [3333333, 4118181, 2222222, 1111111]
Edges: [(3333333, 4118181), (4118181, 4118181), (4118181, 2222222), (4118181, 1111111)]
输出:
{{1}}
答案 1 :(得分:0)
您的节点是整数。你的边缘是字符串。添加节点时,会添加一组名称为整数的节点。添加边时,它会在字符串'4118181'
和'340559596'
之间看到新边。 Python认为它们与整数不同,因此它使用新名称创建新节点并在它们之间放置边缘。
要解决此问题,您需要在添加边之前将字符串转换为整数。