这是我在数据分析过程中遇到的实际问题,简单记录一下。这里以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