嗨,我想创建一个递归函数,它可以从一个嵌套的json文件中提取一个字典,然后将json文件中某个属性(属性权重)的所有值乘以10。在
我知道可以用其他方法来解决这个问题(例如regex),但我这样做是为了提高我编写递归函数的能力,所以我想找到一个递归的解决方案。在
输入json文件示例:{
"name": "Entire genepool",
"children": [{
"name": "child1",
"weight": 80,
"children": [{
"name": "childAA",
"weight": 100,
"children": [{
"name": "childCC",
"weight": 60,
"children": []
}, {
"name": "grandchild",
"weight": 40,
"children": []
}]
}]
}, {
"name": "childb",
"weight": 20,
"children": []
}]
}
到目前为止我所做的(Python 2.7),它不起作用,它返回一个空列表,我添加了一个print语句来可视化输入字典是如何通过递归变化的:
^{pr2}$
打开文件并将其转换为字典并调用函数with open("tree_rec.json", "r") as f:
tree_dic = json.load(f)
recur(tree_dic)
每次递归的输入{u'name': u'Entire genepool', u'children': [{u'name': u'child1', u'weight': 80, u'children': [{u'name': u'childAA', u'weight': 100, u'children': [{u'name': u'childCC', u'weight': 60, u'children': []}, {u'name': u'grandchild', u'weight': 40, u'children': []}]}]}, {u'name': u'childb', u'weight': 20, u'children': []}]}
[{u'name': u'child1', u'weight': 80, u'children': [{u'name': u'childAA', u'weight': 100, u'children': [{u'name': u'childCC', u'weight': 60, u'children': []}, {u'name': u'grandchild', u'weight': 40, u'children': []}]}]}, {u'name': u'childb', u'weight': 20, u'children': []}]
[{u'name': u'childAA', u'weight': 100, u'children': [{u'name': u'childCC', u'weight': 60, u'children': []}, {u'name': u'grandchild', u'weight': 40, u'children': []}]}]
[{u'name': u'childCC', u'weight': 60, u'children': []}, {u'name': u'grandchild', u'weight': 40, u'children': []}]
[]
它返回一个空列表:[]