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