python - 如何在python中从目标数据跟踪到源数据?
问题描述
我想遍历列表/字典中的每个数据 - 在下面的输入中
{mapping1: [(b,c),(a,b),(c,d)],mapping2: [(a,b),(b,c),(e,f),(d,e),(c,f)]}
对于映射 1 d 是目的地和存在源
对于映射 2:f 是目的地,a 和 d 是源。
因此,此链接或跟踪可能会有所不同。
以下是我的输入
{mapping1: [(b,c),(a,b),(c,d)],mapping2: [(a,b),(b,c),(e,f),(d,e),(c,f)]}
输出是:
解决方案
您可以利用 DAG 概念,找到没有出度的节点,即目标,以及没有入度的节点,即源
对于 python,我使用 networkx 来构建 DAG 和 matplotlib 来绘制和保存映射。
pip install networkx matplotlib
您可以将映射添加到 inputList 变量。只需确保将其作为字符元组列表提供即可。输出将是g2.png
与脚本位于同一目录中的文件
import networkx as nx
from numpy import add
inputList = [('a', 'b'), ('b', 'c'), ('e', 'f'), ('d', 'e'), ('c', 'f')]
invertPairs =[]
for x,y in inputList:
invertPairs.append((y,x))
g2 = nx.DiGraph()
g2.add_edges_from(invertPairs)
plt.tight_layout()
nx.draw_networkx(g2, arrows=True)
plt.savefig("g2.png", format="PNG")
plt.clf()
输出
推荐阅读
- java - 尝试通过 putty 编译 java 程序时出现以下错误:预期的类、接口或枚举
- reactjs - 为什么我的 useReducer 功能不起作用。当我使用它时页面显示但功能不起作用
- r - 在 R 中:git2r_remote_ls':无法检索 SSH 身份验证方法列表
- java - 如何使用函数参数:调用特定的getter
- python - 将字典列表保存到文件 python 3
- java - 是否可以通过在 for 循环中调用它们的字符串名称来检查数百个字符串数组?
- java - Spring Data MongoDB Field Converter:有什么方法可以传递参数?
- python - 当日期格式为 dd.mm.yyyy 时,将列转换为日期
- sql - 如何在sql中从当前日期和当前日期中检索最近的过去日期和最未来的日期
- javascript - 带有spalsh的scrapy javascript不会呈现页面