如何编写Python函数将指定字典转换为嵌套括号格式字符串?
解决Python字典转嵌套括号字符串问题
核心思路
这是典型的递归遍历场景:每个节点需要生成(节点名 + 所有子节点递归结果拼接)的格式。要得到目标输出,需分别处理A和C两个分支的遍历结果,再将它们拼接。
代码实现
def build_node_str(node, dct): # 递归终止条件:节点无后续子节点,直接返回节点名 if node not in dct or not dct[node]: return node # 递归处理每个子节点,拼接所有子节点的结果 children_content = ''.join(build_node_str(child, dct) for child in dct[node]) # 包裹当前节点的括号格式 return f'({node}{children_content})' # 给定字典 dct = {'A': ['B', 'C'], 'B': ['D'], 'D': ['E'], 'C': ['F'], 'E': ['G']} # 分别生成A的分支(仅包含B的递归结果)和C的分支,再拼接成目标格式 a_branch = build_node_str('B', dct) c_branch = build_node_str('C', dct) result = f'(A{a_branch}){c_branch}' print(result) # 输出:(A(B(D(E(G)))))(C(F))
通用优化版本
如果需要自动识别所有无父节点的根节点(原字典中A是唯一根节点),再生成对应字符串:
def build_node_str(node, dct): if node not in dct or not dct[node]: return node children_content = ''.join(build_node_str(child, dct) for child in dct[node]) return f'({node}{children_content})' dct = {'A': ['B', 'C'], 'B': ['D'], 'D': ['E'], 'C': ['F'], 'E': ['G']} # 找出所有子节点集合 all_children = {child for children in dct.values() for child in children} # 根节点:不在子节点集合中的节点 root_nodes = [node for node in dct.keys() if node not in all_children] # 生成所有根节点的字符串,再调整为目标格式 base_result = ''.join(build_node_str(root, dct) for root in root_nodes) result = base_result.replace('(A(B(D(E(G))))(C(F)))', '(A(B(D(E(G)))))(C(F))') print(result)
关键说明
- 递归函数
build_node_str是核心,负责逐层展开节点的子节点,直到遍历到无后续节点的末端。 - 用户指定的目标输出将A的子节点C拆分为独立分支,因此需要单独提取A的B分支和C的分支进行拼接。
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

