【发布时间】:2017-03-04 23:17:24
【问题描述】:
{
"id": "9",
"children": [{
"id": "8",
"children": [{
"id": "7",
"children": [{
"id": "6",
"children": [
{
"id": "0",
"type": "isPathForward"
},
{
"id": "2",
"children": [{
"id": "1",
"type": "maze_moveForward"
}],
"type": "DO"
},
{
"id": "5",
"children": [{
"id": "4",
"children": [{
"id": "3",
"type": "turnLeft"
}],
"type": "maze_turn"
}],
"type": "ELSE"
}
],
"type": "maze_ifElse"
}],
"type": "DO"
}],
"type": "maze_forever"
}],
"type": "program"
}
上述有效的 JSON 基本上是一个 AST(抽象语法树),我只想按以下顺序提取“类型”:1) 节点后跟 2) 左子节点,然后 3) 右子节点
与上面的 JSON 完全一样:
Program
maze_forever
DO
maze_ifElse
isPathforward
Do
maze_moveForward
Else
maze_turn
turn_Left
我没有使用过 json 我尝试在 python 中使用生成器,但是在转换为 dict 的过程中顺序丢失了。
你能为此写一个python实现吗?
更新!!!!
到目前为止我已经尝试过:
导入 json json_string= json.loads(高于 json)
when i type :
for i in json_string:
... print(i)
...
OUTPUT
type
id
children
我也试过了
import pandas as pd
d=pd.read_json('{ "id": "9", "children": [{ "id": "8", "children": [{ "id": "7", "children": [{ "id": "6", "children": [ { "id": "0", "type": "isPathForward" }, { "id": "2", "children": [{ "id": "1", "type": "maze_moveForward" }], "type": "DO" }, { "id": "5", "children": [{ "id": "4", "children": [{ "id": "3", "type": "turnLeft" }], "type": "maze_turn" }], "type": "ELSE" } ], "type": "maze_ifElse" }], "type": "DO" }], "type": "maze_forever" }], "type": "program"}')
>>> d
output :
children id type
0 {'type': 'maze_forever', 'id': '8', 'children'... 9 program
以上两种情况:
我不知道如何递归地进入孩子,因为每个孩子都有一个或多个孩子。我搜索的大多数答案都没有解释与上面的 JSON 一样嵌套的 JSON。
【问题讨论】:
-
订单没有丢失,它从未出现过。 JSON 对象不保证有序;如果您关心顺序,请在迭代时使用数组或按适当的键排序。
-
您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQ 和How to Ask。
-
上面的 json 代表一个抽象语法树,如果有办法按照我上面提到的方式提取信息会非常有帮助..谢谢!
-
好的,稍后会发布截图。
-
请不要发布截图。代码是文本,在问题中这样写。回溯等也是如此;搜索无法索引图像的内容。
标签: python json recursion abstract-syntax-tree tree-traversal