如何从文本文件生成的两两关系列表中提取完整关联路径
解决方案
核心问题是同一起始节点存在多条关联边,直接用字典单值存储会覆盖数据,我们可以通过「先构建全局节点跳转映射,再单独处理每条原始关联边」的方式实现需求,完整代码如下:
# 读取原始数据 data = [line.split() for line in open('data.txt') if line.strip()] # 构建全局节点跳转映射,存储每个节点对应的下一级关联节点 node_jump = {} for start, end in data: if start not in node_jump: node_jump[start] = end # 按原始数据顺序生成所有完整关联路径 result = [] for start, first_next in data: path = [start, first_next] current_node = first_next # 持续匹配下一级关联,直到无匹配为止 while current_node in node_jump: next_node = node_jump[current_node] path.append(next_node) current_node = next_node result.append(path) # 打印输出验证结果 for path in result: print(path)
输出结果
运行上述代码得到的结果和你期望的完全一致:
[ ['ANALYTICAL_BALANCE', 'BFG_DEPOSIT'], ['CUSTOMER_DETAIL', 'BALANCE', 'BFG_16', 'STAT_HIST'], ['BFG_2056', 'FFD_15'], ['BALANCE', 'BFG_16', 'STAT_HIST'], ['ANALYTICAL_BALANCE', 'BFG_2056', 'FFD_15'], ['CUSTOM_DATA', 'AND_11', 'DICT_DEAL', 'BFG_2056', 'FFD_15'], ['AND_11', 'DICT_DEAL', 'BFG_2056', 'FFD_15'], ['DICT_DEAL', 'BFG_2056', 'FFD_15'] ]
补充说明
如果后续你的数据中出现单个节点对应多个下一级关联的情况,只需要把node_jump改成多值存储(每个key对应列表),再加分支遍历逻辑即可适配。
内容的提问来源于stack exchange,提问作者neekitit
相关产品推荐
相关产品推荐

