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

如何将树形路径列表每一层级替换为专属唯一值,区分同名字段

路径层级唯一ID替换方案

实现思路

  • 将每个路径按/拆分,最后一段为文件名,前面的片段为各级节点
  • 用字典存储节点映射:key为(父节点唯一ID, 当前节点原始名称),保证不同层级、不同父节点下的同名节点对应不同key
  • 为每个新出现的节点分配全局唯一的ID,可使用自增整数、随机字符串等任意不重复的值
  • 遍历所有路径,逐级替换节点为对应的唯一ID后重新拼接成新路径

代码实现

# 原始路径列表
xo = [
    '1/sometext1',
    '1/1/sometext2',
    '1/1/1/sometext3',
    '1/1/2/sometext4',
    '1/2/sometext5',
    '1/2/1/sometext6',
    '1/2/2/sometext7',
    '2/sometext8',
    '3/sometext9'
]

node_mapping = {}
# 自增ID起始值,可根据需求调整,也可替换为随机字符串生成逻辑
current_unique_id = 1000
xd = []

for path in xo:
    segments = path.split('/')
    file_name = segments[-1]
    level_segments = segments[:-1]
    replaced_levels = []
    parent_uid = ''
    
    for level_name in level_segments:
        # 用父节点ID + 当前节点原始名作为唯一key,区分不同位置的同名节点
        node_key = (parent_uid, level_name)
        if node_key not in node_mapping:
            node_mapping[node_key] = str(current_unique_id)
            current_unique_id += 1
        current_uid = node_mapping[node_key]
        replaced_levels.append(current_uid)
        parent_uid = current_uid
    
    new_path = '/'.join(replaced_levels + [file_name])
    xd.append(new_path)

# 输出结果
print(xd)

效果说明

上述代码运行后输出的xd列表中,所有层级节点都对应唯一ID,完全可以区分不同位置的同名节点。如果需要其他格式的唯一标识,只需替换current_unique_id自增逻辑为对应生成规则即可,只要保证每次生成的值不重复就能满足需求。


内容的提问来源于stack exchange,提问作者sharathchandramandadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:24:05