如何修改嵌套字典的最后一个节点?



假设您有一个嵌套的字典,如下所示:

{
"text": "hi",
"next": {
"text": "hi",
"next": {
"text": "hi",
}
}
}

现在我想把最后一个节点改为{"text": "bye"},这样我的最终结果如下:

{
"text": "hi",
"next": {
"text": "hi",
"next": {
"text": "bye",
}
}
}

请记住,可能有数千个节点,但我只想修改最后一个节点。我该怎么做呢?

遍历字典,获取最后一个对象并更改它

d = {
"text":"hi",
"next":{
"text":"hi",
"next":{
"text":"bye"
}
}
}
pre = d
while True:
next_ = pre.get('next')
if not next_:
pre['text'] = 'bye'
break
pre = next_
print(d)

如果您知道字典的深度,您可以使用reduce,如下所示:

from functools import reduce
def reduce_dict(data, items):
return reduce(dict.get, items, data)
depth = 1000
reduce_dict(my_dict, ['next']* depth)['text'] = 'bye'
root = {'text': 'hi', 'next': {'text': 'hi', 'next': {'text': 'hi'}}}
node = root
while 'next' in node:
node = node['next']
node['text'] = 'bye'
print(root)

输出:

{'text': 'hi', 'next': {'text': 'hi', 'next': {'text': 'bye'}}}

相关内容

  • 没有找到相关文章

最新更新