gpt4 book ai didi

python - 在 Python 中更新嵌套字典中的值

转载 作者:行者123 更新时间:2023-11-28 17:30:28 25 4
gpt4 key购买 nike

我有一个像这样的嵌套 python 字典

{  
"node":{
"node1":{
"node1.1":{

},
"node1.2":{

}
},
"node2":{
"node2.1":{
"node2.1.1":{

}
}
}
}
}

我要实现的是一个树结构,我可以在其中将子元素添加到任何父元素。有没有办法使用键更新嵌套字典的值?

最佳答案

如果你不知道树中的路径,你可以这样做

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")
)
)
)

测试

>>> my_tree_class.printTree()
node
node1
node1.1
node1.2
node2
node2.1
node2.1.1
>>> my_tree_class.update("node2.1",Tree("node2.1.2"))
True
>>> my_tree_class.printTree()
node
node1
node1.1
node1.2
node2
node2.1
node2.1.1
node2.1.2
>>>

树类的细节取决于你想要的树的种类

关于python - 在 Python 中更新嵌套字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com