我有一个像这样的嵌套python字典
{
"node":{
"node1":{
"node1.1":{
},
"node1.2":{
}
},
"node2":{
"node2.1":{
"node2.1.1":{
}
}
}
}
}
我想要实现的是一个树结构,我可以将子元素添加到任何父元素。有没有办法使用键更新嵌套字典的值?
答案 0 :(得分:3)
如果你不知道树中的路径,你可以做这样的事情
color
测试
my_tree={
"node":{
"node1":{
"node1.1":{},
"node1.2":{}
},
"node2":{
"node2.1":{
"node2.1.1":{}
}
}
}
}
def update_tree(tree,key,value):
"""Return true if update, else false"""
if key in tree:
tree[key].update(value)
return True
for branch in tree.values():
if update_tree(branch,key,value):
return True
return False
修改强>
实现一个简单的树类,就像这样
>>> import pprint
>>> pprint.pprint(my_tree)
{'node': {'node1': {'node1.1': {}, 'node1.2': {}},
'node2': {'node2.1': {'node2.1.1': {}}}}}
>>> update_tree(my_tree,"node2.1",{"node2.1.2":{}})
True
>>> pprint.pprint(my_tree)
{'node': {'node1': {'node1.1': {}, 'node1.2': {}},
'node2': {'node2.1': {'node2.1.1': {}, 'node2.1.2': {}}}}}
>>>
测试
class Tree(object):
def __init__(self,value=None,*branchs):
self.value = value
self.branchs = list(branchs)
def update(self,parent,value):
if self.value == parent:
self.branchs.append(value)
return True
for branch in self.branchs:
if branch.update(parent,value):
return True
return False
def printTree(self,nivel=0):
print( " "*nivel + str(self.value))
for branch in self.branchs:
branch.printTree(nivel+4)
my_tree_class=Tree("node",
Tree("node1",
Tree("node1.1"),
Tree("node1.2")
),
Tree("node2",
Tree("node2.1",
Tree("node2.1.1")
)
)
)
树类的细节取决于您想要的树种类
答案 1 :(得分:-1)
是。您必须使用dict[key] = value
语法。我建议你在data structure definition
答案 2 :(得分:-1)
这是你要找的吗?
dict['node']['node1']['node1.2'] = 'new value'
dict
{'node': {'node1': {'node1.2': 'new value', 'node1.1': {}}, 'node2': {'node2.1': {'node2.1.1': {}}}}}