You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:01:28