to_dict_of_dicts#

to_dict_of_dicts(G, nodelist=None, edge_data=None)[源代码]#

将图形的邻接表示形式作为字典返回。

参数
G图表

网络X图表

nodelist列表

仅使用节点列表中指定的节点

edge_data标量,可选

如果提供,则字典的值将设置为 edge_data 用于所有边。通常的值可能是 1True 。如果 edge_dataNone (默认),中的边框数据 G 被使用,导致词典-of-dicts。如果 G 是多重图,则结果将是字典。有关自定义处理边缘数据的方法,请参见注释。 edge_data 应该 not 做一个容器。

返回
dodDICT

的嵌套词典表示形式 G 。请注意,嵌套级别取决于 G 以及它的价值 edge_data (请参见示例)。

笔记

有关处理边缘数据的更定制方法,请尝试::

dod = {
    n: {
        nbr: custom(n, nbr, dd) for nbr, dd in nbrdict.items()
    }
    for n, nbrdict in G.adj.items()
}

哪里 custom 返回中间每条边的所需边数据 nnbr ,给定现有的边缘数据 dd

实例

>>> G = nx.path_graph(3)
>>> nx.to_dict_of_dicts(G)
{0: {1: {}}, 1: {0: {}, 2: {}}, 2: {1: {}}}

默认情况下会保留边数据 (edge_data=None ),导致词典词典,其中最里面的词典包含边缘数据:

>>> G = nx.Graph()
>>> G.add_edges_from(
...     [
...         (0, 1, {'weight': 1.0}),
...         (1, 2, {'weight': 2.0}),
...         (2, 0, {'weight': 1.0}),
...     ]
... )
>>> d = nx.to_dict_of_dicts(G)
>>> d  
{0: {1: {'weight': 1.0}, 2: {'weight': 1.0}},
 1: {0: {'weight': 1.0}, 2: {'weight': 2.0}},
 2: {1: {'weight': 2.0}, 0: {'weight': 1.0}}}
>>> d[1][2]['weight']
2.0

如果 edge_data 不是 None ,替换原始图形中的边数据(如果有):

>>> d = nx.to_dict_of_dicts(G, edge_data=1)
>>> d
{0: {1: 1, 2: 1}, 1: {0: 1, 2: 1}, 2: {1: 1, 0: 1}}
>>> d[1][2]
1

这也适用于多图形:默认情况下会保留边缘数据:

>>> G = nx.MultiGraph()
>>> G.add_edge(0, 1, key='a', weight=1.0)
'a'
>>> G.add_edge(0, 1, key='b', weight=5.0)
'b'
>>> d = nx.to_dict_of_dicts(G)
>>> d  
{0: {1: {'a': {'weight': 1.0}, 'b': {'weight': 5.0}}},
 1: {0: {'a': {'weight': 1.0}, 'b': {'weight': 5.0}}}}
>>> d[0][1]['b']['weight']
5.0

但是,如果出现以下情况,多边数据将丢失 edge_data 不是 None

>>> d = nx.to_dict_of_dicts(G, edge_data=10)
>>> d
{0: {1: 10}, 1: {0: 10}}