该函数将字典作为输入,我想在字典中找到最长路径的长度.基本上,如果在字典中,key2与value1匹配,key3与value2匹配,依此类推,则计为路径.例如:
{'a':'b', 'b':'c', 'c':'d'}
在上面的例子中,长度应该是三.我怎么做到这一点?或者更具体地说,我如何比较键值?(它可以是任何东西,字符串,数字等,而不仅仅是数字)
提前谢谢了!
我会将字典视为有向非循环图(DAG)中的边列表,并使用该networkx
模块在图中找到最长路径:
import networkx as nx data = {'a':'b', 'b':'c', 'c':'d'} G = nx.DiGraph() G.add_edges_from(data.items()) try: path = nx.dag_longest_path(G) print(path) # ['a', 'b', 'c', 'd'] print(len(path) - 1) # 3 except nx.exception.NetworkXUnfeasible: # There's a loop! print("The graph has a cycle")