NetworkX:从值为列表的字典向图添加边

3 投票
1 回答
7293 浏览
提问于 2025-04-30 18:37

我有个问题,想知道如何从一个包含列表作为值的字典中给图添加边。
我想定义一个函数,这个函数接收一个字典作为参数,然后为字典中每个键和对应的值列表里的对象添加一条边。
我已经创建了一个空的图结构,现在想知道有没有什么聪明的方法可以把整个字典添加进去。

def build_network(dict):

  G = nx.Graph() 

之后我只想返回构建好的图。

我知道这是个初学者的问题,但任何帮助我都会非常感激!

编辑 1:这个字典的键是一个足球运动员,值是他曾经效力过的俱乐部列表。

编辑 2:字典中的字符串是Unicode格式的。一个例子是 {u'Drogba': [u'Le Mans', u'Chelsea', u'Galatasaray'], u'Beckham': [u'Manchester United', u'Real Madrid', u'Los Angeles Galaxy']}

暂无标签

1 个回答

10

Graph对象可以接受一个字典作为初始化参数,所以我觉得它会很简单地满足你的需求:

>>> d = {'Drogba': ['Le Mans', 'Chelsea', 'Galatasaray'], 'Beckham': ['Manchester United', 'Real Madrid', 'Los Angeles Galaxy']}
>>> g = nx.Graph(d)
>>> g.nodes()
['Manchester United', 'Beckham', 'Real Madrid', 'Le Mans', 'Los Angeles Galaxy', 'Drogba', 'Galatasaray', 'Chelsea']
>>> g.edges("Beckham")
[('Beckham', 'Real Madrid'), ('Beckham', 'Los Angeles Galaxy'), ('Beckham', 'Manchester United')]
>>> g.neighbors("Drogba")
['Galatasaray', 'Chelsea', 'Le Mans']

撰写回答