python字典嵌套字典构造_如何从嵌套字典构造有向图?(Python 3 | NetworkX)

我试图建立一个层次化的有向网络,其中一些节点可以分支到其他节点,而其他节点则不能。内部字典中的值(即整数)用于跟踪树型结构中的叶子。我已经创建了一个简单的方法来将这个特定的嵌套字典graph_data转换为有向图,但它只特定于3层。下面显示了层次结构:

8rJILm.png

如何创建一个嵌套函数,为任意级别的有向图添加边?例如,如果有一个level-3或level-4这就行不通了,我每次都要把它展开。我需要使用while循环吗?在import numpy as np

from collections import *

import networkx as nx

%matplotlib inline

# Hierarchical data

graph_data = {"root": {"level-0.A":0,

"level-0.B":{"level-1.B.1":2,

"level-1.B.2": {"level-2.B.2.1":3, "level-2.B.2.2":1}}}}

# Empty directed graph

G = nx.DiGraph()

# Helper functions

is_dict = lambda x: type(x) in {dict, OrderedDict, defaultdict}

# Iterate through the layers

for root, level_0 in graph_data.items():

if len(level_0) > 0:

for level_0_node, level_1 in level_0.items():

G.add_edge(root, level_0_node)

if is_dict(level_1):

for level_1_node, level_2 in level_1.items():

G.add_edge(level_0_node, level_1_node)

if is_dict(level_2):

for level_2_node, level_3 in level_2.items():

G.add_edge(level_1_node, level_2_node)

np.random.seed(8)

nx.draw(G, with_labels=True)

G9lAh.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值