如何消除图中的重复项

2024-06-01 12:02:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我从元组的朋友列表中构建一个社交图,如下所示:

(4118181 {'last_name': 'Belousov', 'first_name': 'Mikhail'})

函数如下:

^{pr2}$

因此,我得到了一个具有重复数量节点的图,第一个具有属性,来自

g.add_nodes_from(friends)

第二个是从

 g.add_edges_from(edges_to_add)

我阅读了这些文档,但是不明白,如何在这些节点之间添加具有属性和边的节点?在


Tags: 函数namefromadd列表属性节点朋友
2条回答

你的节点是整数。你的边缘是弦。当您添加节点时,它会添加一组名称为整数的节点。当它添加一个边时,它会在字符串'4118181''340559596'之间看到一个新的边。Python认为这些节点与整数不同,因此它用新名称创建新节点,并在它们之间加上一条边。在

要解决这个问题,需要在添加边之前将字符串转换为整数。在

因此,您的函数在节点startfriends中的每个节点之间添加边。我试过你的代码,没有发现任何重复的节点。这是我的完整示例(请注意,我更正了代码中的几个错误)。在

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())

输出:

^{pr2}$

相关问题 更多 >