如何摆脱图表中的重复

时间:2017-03-31 06:10:44

标签: python graph networkx

我正在从这样的元组'朋友'列表中构建社交图:

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

我阅读了文档,但无法弄清楚,如何在这些节点之间添加属性和边缘的节点?

2 个答案:

答案 0 :(得分:0)

因此,您的函数会在节点friendsimport 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认为它们与整数不同,因此它使用新名称创建新节点并在它们之间放置边缘。

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