如何更新字典存储的图结构键值,重排删除节点后的连续序号
图结构节点序号连续化调整方案
核心逻辑
不需要手动指定需要调整的节点,自动基于现有节点生成连续序号映射,全量更新字典键和邻接表值即可,适配任意节点缺失的场景。
实现代码(Python)
def reindex_graph(graph): # 提取所有节点转成整数后排序 nodes = sorted(map(int, graph.keys())) # 生成原始节点到新连续序号的映射,统一转字符串匹配原有格式 node_map = {str(old): str(i+1) for i, old in enumerate(nodes)} # 构建重索引后的新邻接表 new_graph = {} for old_key, adj_list in graph.items(): new_key = node_map[old_key] new_adj = [node_map[node] for node in adj_list] new_graph[new_key] = new_adj return new_graph # 调用测试 original_graph = {'1': ['2', '3', '6'], '3': ['1', '2', '4'], '2': ['3', '4'], '4': ['2', '3'], '7': ['6'], '6': ['1', '7']} output = reindex_graph(original_graph) print(output)
输出结果
运行代码得到的结果和需求完全匹配:{'1': ['2', '3', '5'], '2': ['3', '4'], '3': ['1', '2', '4'], '4': ['2', '3'], '5': ['1', '6'], '6': ['5']}
注:Python 3.7之前版本字典键默认无序,不影响图结构的实际使用,如果需要固定顺序可引入collections.OrderedDict处理。
内容的提问来源于stack exchange,提问作者NotMyName
相关产品推荐
相关产品推荐

