我将以“无论如何我不是开发人员”作为开场白,但我被抛出了这项任务,我只是迷失了方向。这是我7年多来第一次使用python,也是第一次编写代码,但进展并不顺利。在
我所拥有的JSON是一个组织树,其中每个级别都可能在其下面有子级。在
我需要在Jupyter笔记本中用Python编写一个脚本,将其展平成这种格式,或者类似的格式,其中每个新的子元素都是一个新行。在
level1 | level2 | level3
org1
org1 org2
org1 org2 org3
以下是JSON:
^{pr2}$我已经尝试了各种for循环,并在互联网上搜索了好几天,但我想我缺少一些非常基本的知识来实现这个功能。如果有人能提供任何帮助,我将不胜感激。在
以下是我的开场白:
for item in orgs_json:
orgs_json_children = item["Children"]
orgs_list.append(orgs_json_children)
或者
wanted = ['Children', 'Name']
for item in orgs_json[0]:
details = [X["Name"] for X in orgs_json]
for key in wanted:
print(key, ':', json.dumps(details[key], indent=4))
# Put a blank line at the end of the details for each item
print()
一个json递归树可以有多个根,叶不应该强制指定void children。例如,这里有一棵树,它有两个根“a”和“b”,节点只有一个“level”数据,即节点深度(“children”是可选的):
代码必须返回叶和完整的分支路径,直到每次离开:
^{pr2}$它显示:
可以使用堆栈处理嵌套结构:
while stack:
循环中,从堆栈中获取顶层元素。做你需要做的事情,比如记录名字。从添加了当前组织名称的组织路径中生成一行。在Children
键中的所有元素与父组织的组织路径一起添加到堆栈中。在需要反转,因为从堆栈中获取元素的顺序是相反的。您仍然希望将堆栈用于此作业(而不是队列),因为我们希望首先输出信息深度。在
这看起来像这样:
然后可以循环上述函数以获取所有路径:
^{pr2}$可以递归地对数据进行迭代。Prefix表示到目前为止看到的名称列表,data表示您还必须学习的词法列表。在
同样,使用产量:
^{pr2}$如果需要所有部分列表,则解决方案更短:
相关问题 更多 >
编程相关推荐