我有一个json列表(最初是来自TestRail API getcases的响应),我正试图解析它。下面是一个json示例:
[
{
"id": 1,
"parent_id": null,
},
{
"id": 2,
"parent_id": 1,
},
{
"id": 6,
"parent_id": null,
},
{
"id": 16,
"parent_id": 2,
},
{
"id": 7,
"parent_id": 1,
},
{
"id": 3,
"parent_id": 6
}
]
我要做的是找出哪些ID属于原始父ID。
例如,id:1
和{"parent_id": null
以来最顶级的父节点。在
我想让所有的子节点都在最上面的父节点之下。
在这个例子中,这里是基于parent_id
的关系
1->;[2,7]->;16
6->;3
主要目标是确定顶级父节点的所有子节点(和子子节点)是什么。我不想知道子代父子关系。在
我要分析的是得到以下输出:
^{pr2}$一种方法是使用两个嵌套的for循环,对于每个顶级父节点,检查它是否以parent_id
的形式出现,然后递归地执行,但这看起来不是一个很好的方法。在
如有任何意见/建议,将不胜感激
roots_dict
的设计使得roots_dict[node]
将返回node
的顶层父级,或者{__missing__
是一种可以为dict重写的特殊方法。当从dict请求key
但不存在时,调用它。无论方法返回什么,都将以该值放入dict中。例如,当第一次被访问时,roots_dict[16]
将被设置为等于roots_dict[2]
,这反过来又会要求roots_dict[1]
,这就是1
。其余的都很简单。在相关问题 更多 >
编程相关推荐