python - 返回一个修改过的树,每个节点都添加了括号
问题描述
我有一个遍历树中每个节点的函数,我正在尝试创建一个修改过的树,每个节点都添加了括号。
由于元组是不可变的,我知道我不能通过索引选择节点并以这种方式添加括号,所以我一直在尝试如何将树重建回其原始状态,每个节点周围都有括号。
def add_brackets(node):
parent, children = node
for child in children:
add_brackets(child)
为了,
("hello", (("a", ()), ("b", (("cde", ()), ("fg", ())))))
我想回来,
('[hello]', (('[a]', ()), ('[b]', (('[cde]', ()), ('[fg]', ())))))
我怎样才能做到这一点?
解决方案
是的,元组是不可变的,你需要构造新的并返回它们。
尝试这个:
def add_brackets(node):
parent, children = node
new_parent = "[{}]".format(parent)
new_children = tuple(add_brackets(child) for child in children)
return (new_parent, new_children)
root = ("hello", (("a", ()), ("b", (("cde", ()), ("fg", ())))))
root = add_brackets(root)
print(root)
输出:
('[hello]', (('[a]', ()), ('[b]', (('[cde]', ()), ('[fg]', ())))))
推荐阅读
- c# - 使用 ToolStripControlHost 将 HTML 代码加载到 Windows 窗体工具提示中
- reactjs - 在 Reactjs 中更改 json
- java - Java中密码模式的正则表达式
- javascript - 动态数据处理的Highcharts问题
- c++ - 使用 libmysql 插入特殊字符
- python - 用于语音到文本的python程序
- javascript - 使用 jQuery 更改变换原点?
- laravel - Laravel - 与 Eloquent 集合不同的合并集合?
- unity3d - 如何解决“注册远程通知失败”,在“Unity Cloud Build”构建的iOS游戏上接收推送通知
- python - 如何将多个请求作为微服务处理