networkx2 adjlist_inner_dict_factory和adjlist_outter_dict_factory有什么区别

时间:2019-06-10 15:25:58

标签: python networkx adjacency-list

在networkx 1中,图形具有一种称为adjlist_dict_factory的方法,可用于创建邻接表。在networkx 2中,有两种方法

  • adjlist_inner_dict_factory
  • adjlist_outer_dict_factory

内部和外部在这里指的是什么?

具体来说,对于subgraph extraction code in 1.10,我应该用哪个替换adjlist_dict_factory

我尝试了两个,看来它们都可以工作...

在IPython笔记本中,来自??的信息对他们来说也一样。

In [4]: g.adjlist_outer_dict_factory??
Init signature: g.adjlist_outer_dict_factory(self, /, *args, **kwargs)
Docstring:
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
    d = {}
    for k, v in iterable:
        d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
    in the keyword argument list.  For example:  dict(one=1, two=2)
Type:           type

In [5]: nx.__version__
Out[5]: '2.2'

1 个答案:

答案 0 :(得分:0)

来自official documentation

  

子类(高级):

     

Graph类使用dict-dict-dict-dict数据结构。外部字典(node_dict)保存由节点键入的邻接信息。下一个字典(adjlist_dict)表示邻接信息,并保存由邻居键入的边缘数据。内部dict(edge_attr_dict)表示边缘数据,并保存以属性名称为键的边缘属性值。

     

这三个字典中的每个字典都可以在子类中由用户定义的类似字典的对象替换。通常,应保留类似dict的功能,但可以添加额外的功能。要替换其中一个字典,可以通过更改class(!)变量来创建一个新的图类,该变量保留了该字典式结构的工厂。变量名称为node_dict_factory,node_attr_dict_factory,adjlist_inner_dict_factory,adjlist_outer_dict_factory,edge_attr_dict_factory和graph_attr_dict_factory。

这些功能在networkx2图的子类中用于:

  • adjlist_outer_dict_factory:节点邻接(存在边)
  • adjlist_inner_dict_factory:边数据