Python 获取分支数据/图形数据

Python 获取分支数据/图形数据,python,json,database,graph,Python,Json,Database,Graph,假设我有以下数据,我想找到“免疫缺陷”这个保护伞下的所有东西 我该怎么做?数据是JSON btw格式的,所以它是这样的{“startNode”:“免疫缺陷”,“关系”:“包括”,“endNode”:“B细胞紊乱”} 对于一个非嵌套类别来说,这很简单。我做了以下工作: for x in range(len(peds_diseaseR)) if peds_diseaseR[x]["startNode"] == "immunodeficiencies" &

假设我有以下数据,我想找到“免疫缺陷”这个保护伞下的所有东西

我该怎么做?数据是JSON btw格式的,所以它是这样的
{“startNode”:“免疫缺陷”,“关系”:“包括”,“endNode”:“B细胞紊乱”}

对于一个非嵌套类别来说,这很简单。我做了以下工作:

for x in range(len(peds_diseaseR))
if peds_diseaseR[x]["startNode"] == "immunodeficiencies" && peds_diseaseR[x]["relationship"] == "includes":
    List.append(x)
对于一种嵌套的疾病,我真的迷路了。我觉得也许我需要一个递归函数,但我不知道。我本来想把我写的代码打出来的,但我觉得它比任何东西都更让人困惑,而且不起作用

编辑:刚刚添加了这个,但它不起作用

var endNodes = []

func findEndNodes(start):
    for x in range(len(peds_diseaseR)):
        if peds_diseaseR[x]["startNode"] == start && peds_diseaseR[x]["relationship"] == "includes":
            endNodes.append(peds_diseaseR[x]["endNode"])
        if endNodes != []:
            for disease in endNodes:
                findEndNodes(disease)
    print(endNodes)
    return endNodes

你很接近。只要稍微重新安排一下,您就会找到解决方案:

peds_diseaseR=[] def findEndNodes(启动): #声明,因为每次递归都需要一个新的 childnodes=[] 对于peds_diseaseR中的关系: 如果关系[“开始节点”]==开始和关系[“关系”]==“包括”: 疾病=关系[“末端节点”] 子节点。追加(疾病) #如果现在处理它,则不需要检查列表中是否有值。 #因此,代码更少,但更重要的是,代码所处的状态更少。 #在进行递归时,很容易在尝试制作心理映射时迷失方向。 #让它尽可能简单! 递归_节点=findEndNodes(疾病) 子节点。扩展(递归节点) 打印(子节点) 返回子节点
如您所见,我只将
func
替换为
def
,并删除了
var
关键字。这在python中并不存在。您只需指定一个值。append和extend之间有细微的区别<代码>扩展将
追加
列表中的所有值。

有什么不同的关系?除了
includes
之外,还有其他关系吗?噢,func不是python关键字。您在这里查找的关键字是
def
Oh抱歉。我实际上使用的是gdscript,它基本上是python,有一些细微的区别
func
是其中之一,是的,存在除包含之外的其他关系
hx
(意思是历史)、
pe
(意思是体检)和
tx
(意思是治疗)哇,非常感谢您的帮助!!特别是评论。非常有帮助!
var endNodes = []

func findEndNodes(start):
    for x in range(len(peds_diseaseR)):
        if peds_diseaseR[x]["startNode"] == start && peds_diseaseR[x]["relationship"] == "includes":
            endNodes.append(peds_diseaseR[x]["endNode"])
        if endNodes != []:
            for disease in endNodes:
                findEndNodes(disease)
    print(endNodes)
    return endNodes