NetworkX学习笔记-5-NetworkX中怎样对多个网络赋属性,并根据属性排序

这是我在数据分析过程中遇到的实际问题,简单记录一下。这里以DiGraph为例,其他类型的网络(图)的处理方法是一样的。

按照这里:http://networkx.github.io/documentation/development/reference/classes.digraph.html 的官方文档介绍,对于DiGraph,每一个图、节点和边,都可以赋一个或多个以字典形式存在的key/value对,所以可以这样对一个DiGraph赋一个属性:

G=nx.DiGraph(Seq=0)
print G.graph
#output: {'Seq': 0}
print G.graph['Seq']
#output: 0

这里再稍微多解释一下:我们使用G.graph这条语句,就可以返回刚才赋值的字典。

这是对某一个网络赋属性,如果我们有多个这样的网络,并需要按照这一属性进行排序,那应该怎么做呢?实际上也很简单,假设我们就按照上面的Seq属性对一个DiGraph的list进行排序,只需要下面一条语句:

 

G_list.sort(lambda x,y : cmp(x.graph['Seq'], y.graph['Seq']))
#G_list is a list of DiGraphs in NetworkX

这里主要参考了这篇日志:

http://huaxia524151.iteye.com/blog/1169779

对字典的排序,大家也可以参考这篇日志:

http://ghostfromheaven.iteye.com/blog/1563576


原文地址:https://www.cnblogs.com/javawebsoa/p/3226034.html