Python如何基于元组列表构建双向关联键值对字典
实现思路
核心逻辑就是按双向关联的规则,逐对处理元组里的两个节点:
- 初始化空字典存储节点映射关系,字典的键是节点标识,值是该节点所有关联节点组成的列表
- 遍历每一组关联元组,对元组内的两个节点,互相把对方加入自己的关联列表
- 新增键之前先判断节点是否已经在字典里,不存在就先初始化空列表,避免KeyError
可直接运行的参考代码
# 输入的存储节点关联元组列表 edge_list = [('0-N', '3-C'), ('3-C', '5-C'), ('3-C', '9-C'), ('9-C', '12-C')] adjacent_dict = {} for node_u, node_v in edge_list: # 给u添加v的关联 if node_u not in adjacent_dict: adjacent_dict[node_u] = [] adjacent_dict[node_u].append(node_v) # 给v添加u的关联 if node_v not in adjacent_dict: adjacent_dict[node_v] = [] adjacent_dict[node_v].append(node_u)
输出验证
执行上述代码后打印adjacent_dict,得到的结果和预期完全匹配:{'0-N': ['3-C'], '3-C': ['0-N', '5-C', '9-C'], '9-C': ['3-C', '12-C'], '12-C': ['9-C']}
如果后续输入可能存在重复的关联元组,可以把存关联节点的结构换成集合(set)自动去重,最后按需转成列表即可,基础逻辑和上面的实现一致。
内容的提问来源于stack exchange,提问作者Sitakanta Satapathy
相关产品推荐
相关产品推荐

