Python 导致在创建嵌套字典时出错 def pi_drug_目标(图形,节点): pi_to_drug_节点=P.邻居(节点) nghr_目标={} 对于pi_to_drug_节点中的pi_drug: nghr_靶点[pi_药物]={} nghr_靶点[pi_药物]['治疗]=[] 如果B.有淋巴结(PIU药物): 药物靶标=B.邻居(pi药物) 对于药物治疗中的目标: nghr_靶点[pi_药物]['用']治疗].附加(靶点) nghr_目标[目标]['用''.'处理]['用'.'处理的邻居]=[] 如果G.有_节点(目标): gg_节点=G.邻居(目标) 对于gg_节点中的ggn: 如果G.has_节点(ggn): nghr_靶向[pi_药物]['用''.'治疗]['邻居用'.]治疗].附加(ggn) 回报(nghr_目标) KeyError回溯(最近一次呼叫最后一次) 在() ---->1个药物靶点(P,“DO218719”) 在pi_drug_目标中(图形、节点) 12关于药物的目标: 13 nghr_靶点[pi_药物]['用']治疗].追加(靶点) --->14个nghr_靶点[靶点]['用']['处理]['基因邻居']=[] 15 16如果G.有_节点(目标): 键错误:“CYP19A1”

Python 导致在创建嵌套字典时出错 def pi_drug_目标(图形,节点): pi_to_drug_节点=P.邻居(节点) nghr_目标={} 对于pi_to_drug_节点中的pi_drug: nghr_靶点[pi_药物]={} nghr_靶点[pi_药物]['治疗]=[] 如果B.有淋巴结(PIU药物): 药物靶标=B.邻居(pi药物) 对于药物治疗中的目标: nghr_靶点[pi_药物]['用']治疗].附加(靶点) nghr_目标[目标]['用''.'处理]['用'.'处理的邻居]=[] 如果G.有_节点(目标): gg_节点=G.邻居(目标) 对于gg_节点中的ggn: 如果G.has_节点(ggn): nghr_靶向[pi_药物]['用''.'治疗]['邻居用'.]治疗].附加(ggn) 回报(nghr_目标) KeyError回溯(最近一次呼叫最后一次) 在() ---->1个药物靶点(P,“DO218719”) 在pi_drug_目标中(图形、节点) 12关于药物的目标: 13 nghr_靶点[pi_药物]['用']治疗].追加(靶点) --->14个nghr_靶点[靶点]['用']['处理]['基因邻居']=[] 15 16如果G.有_节点(目标): 键错误:“CYP19A1”,python,dictionary,networkx,Python,Dictionary,Networkx,我有3个networkx图p、B和G。我试图创建一个函数,当我在p图中输入一个节点时,它会找到给定节点的相邻节点。然后,遍历这些邻居,并在另一个图(B)中找到它的邻居。然后,遍历在中找到的邻居 B图,并在另一个图(G)中再次找到邻居。我想创建一个嵌套字典,将节点显示为键,将邻居显示为值。这是我创建的代码,但即使我检查了图中是否存在该节点,我仍会收到此KeyError 我刚开始编程和使用networkx。因此,任何帮助都是感激的!谢谢大家! 在主for循环开始时,您有:nghr_目标[pi_药物]

我有3个networkx图p、B和G。我试图创建一个函数,当我在p图中输入一个节点时,它会找到给定节点的相邻节点。然后,遍历这些邻居,并在另一个图(B)中找到它的邻居。然后,遍历在中找到的邻居 B图,并在另一个图(G)中再次找到邻居。我想创建一个嵌套字典,将节点显示为键,将邻居显示为值。这是我创建的代码,但即使我检查了图中是否存在该节点,我仍会收到此KeyError


我刚开始编程和使用networkx。因此,任何帮助都是感激的!谢谢大家!

在主for循环开始时,您有:
nghr_目标[pi_药物]={}

让我们第一次追踪这个循环。您为
nghr\u目标
初始化的所有内容都是针对
pi\u药物
。但是,您可以将
nghr\u targets
与键
targets
一起使用。如果有任何
目标
不是
pi_药物
,那么第一次通过它必须失败


在完成整个循环之前,先初始化它。或者更好的方法是使用一个。

谢谢!还没有使用defaultdict,所以我根据您关于在循环之前先初始化的建议对它进行了调整,它成功了!
def pi_drug_target(graph, node):
    pi_to_drug_nodes = P.neighbors(node)
    nghr_targets = {}

    for pi_drug in pi_to_drug_nodes:
        nghr_targets[pi_drug] = {}
        nghr_targets[pi_drug]['treated with'] = []

        if B.has_node(pi_drug):
            drug_target = B.neighbors(pi_drug)

        for targets in drug_target:
            nghr_targets[pi_drug]['treated with'].append(targets)
            nghr_targets[targets]['treated with']['neighbors with'] = []

            if G.has_node(targets):
                gg_nodes = G.neighbors(targets)
                for ggn in gg_nodes:

                    if G.has_node(ggn):
                        nghr_targets[pi_drug]['treated with']['neighbors with'].append(ggn)
    return(nghr_targets)

KeyError                                  Traceback (most recent call last)
 <ipython-input-45-54c0755520e2> in <module>()
  ----> 1 pi_drug_target(P, 'DO218719')

 <ipython-input-42-22f6ce132dca> in pi_drug_target(graph, node)
 12             for targets in drug_target:
 13                 nghr_targets[pi_drug]['is treated with'].append(targets)
 ---> 14                 nghr_targets[targets]['treated with']['Gene neighbors with'] = []
 15 
 16                 if G.has_node(targets):

 KeyError: 'CYP19A1'