【发布时间】:2019-07-26 18:04:26
【问题描述】:
我有一个程序可以解析 maven 依赖树并按照我想要的方式组织数据。我不确定如何正确索引数据以返回它。这是 maven 依赖树解析器的输出数据的摘录(使用 pprint)。
[{'name': 'org.antlr'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.antlr'},
{'artifactId': 'antlr4',
'children': [({'name': 'org.antlr'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.antlr'},
{'artifactId': 'antlr4-runtime'}]}),
({'name': 'org.antlr'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.antlr'},
{'artifactId': 'antlr-runtime'}]}),
({'name': 'org.antlr'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.antlr'},
{'artifactId': 'ST4'}]}),
({'name': 'org.abego.treelayout'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.abego.treelayout'},
{'artifactId': 'org.abego.treelayout.core'}]}),
({'name': 'org.glassfish'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'org.glassfish'},
{'artifactId': 'javax.json'}]}),
({'name': 'com.ibm.icu'},
{'type': 'dependency'},
{'metadata': [{'groupId': 'com.ibm.icu'},
{'artifactId': 'icu4j'}]})]}]}]
我试过了:
pprint([name for name in parsedTree[0]])
或
pprint(parsedTree[0:1])
或这些的变体,其中 parsedTree 是上面显示的输出。
最终,我只想返回每个名称,可能使用递归或生成器来为 API 调用准备此信息。我不知道如何单独索引和提取名称(没有元数据或类型)。有没有办法做到这一点? 先感谢您。 我想分别获取每个名称,这样如果我执行 Beans.name 之类的操作,它就会返回
org.antlr
org.antlr
org.antlr
org.antlr
org.antlr
org.abego.treelayout
org.glassfish
com.ibm.icu
【问题讨论】:
-
你能包括你的预期/期望的输出吗?到目前为止,您尝试过什么?
-
我添加了我希望输出在问题正文中的样子。关于我尝试过的内容,我大多只是尝试了列表推导和切片,以缩小返回给我的范围。
-
您是否需要仅针对此特定示例的实现?
-
不,它需要适用于任何 mvn 依赖树。
标签: python python-3.x dictionary indexing