在lambda函数python中返回2个值

在lambda函数python中返回2个值,python,networkx,Python,Networkx,我正在使用networkx处理图形。我希望根据边上的权重实现最长路径。到目前为止,代码如下所示: df = pd.read_csv('values.csv') Graphtype = nx.MultiDiGraph() G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='value',create_using=Graphtype) def get_weight(G, path)

我正在使用networkx处理图形。我希望根据边上的权重实现最长路径。到目前为止,代码如下所示:

df = pd.read_csv('values.csv')

Graphtype = nx.MultiDiGraph()

G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='value',create_using=Graphtype) 

def get_weight(G, path):
    total = 0
    for u, v in zip(path[:-1], path[1:]):
        total += G.get_edge_data(u,v)[0]['value']
    return total



longest_path = max((path for path in nx.all_simple_paths(G, 'a', 'd')),
                    key=lambda path: get_weight(G,path))
输出返回实现相同目标的最长路径。现在我还要返回返回的路径的权重

我也可以通过
weight\u max=get\u weight(G,最长路径)
来获取权重

是否有任何方法可以在单个lambda函数本身或任何其他方式中返回路径和权重


谢谢

您可以使用lambda返回多个值,方法是将这些值显式地包装在括号中:

反向=λx,y:(y,x) >>>倒拱(1,2) (2, 1) 请注意,分配给lambdas是毫无意义的,我只是出于演示目的在上面这样做的

这意味着,在代码中,您可以执行以下操作:

#。。。
最长路径=最大值((nx中路径的路径。所有简单路径(G,'a','d')),
key=lambda路径:(获取权重(G,路径,路径))
# ...

如果我对你需要什么的理解是正确的。如果没有,希望您可以很容易地概括这个概念。

您可以使用lambda返回多个值,方法是将这些值显式地包装在括号中:

反向=λx,y:(y,x) >>>倒拱(1,2) (2, 1) 请注意,分配给lambdas是毫无意义的,我只是出于演示目的在上面这样做的

这意味着,在代码中,您可以执行以下操作:

#。。。
最长路径=最大值((nx中路径的路径。所有简单路径(G,'a','d')),
key=lambda路径:(获取权重(G,路径,路径))
# ...


如果我对你需要什么的理解是正确的。如果没有,希望你能很容易地概括这个概念。

@YogeshMhaskule谢谢你的回答,还有其他方法可以实现吗?你当然可以用lambda返回多个值。我的第一个想法是返回一个包含这些值的列表或元组。@FedericoS你可以发布一个实现相同值的方法吗?@JamesPhillips任何指针都将不胜感激。你能解释一下吗。Thanks@YogeshMhaskule谢谢你的回答,还有其他方法可以实现吗?你当然可以用lambda返回多个值。我的第一个想法是返回一个包含这些值的列表或元组。@FedericoS你能给出一个实现相同值的方法吗?@JamesPhillips任何提示都将不胜感激。你能解释一下吗。感谢任何给定函数的多个返回都是一个元组。我鼓励您将上面我的lambda上的
type()
的输出与带有
返回y,x
@YogeshMhaskule的命名函数进行比较。问题是“是否有任何方法…”,而不是“单独”。请重新阅读问题。由于答案的清晰性和卓越性,我们投了赞成票。@FedericoS感谢您的解释。但是,对于您共享的代码,我已经得到了基于最大权重的路径。因此get_weight()返回权重,并选择并返回具有最大值的路径。现在,我还想返回返回的路径的权重。不确定您的代码是否也会这样做。不管怎样,我知道你想说什么了。谢谢你,同样的。干得好。我同意这个答案。展示任何实际的解决方案是很好的,然后让提问者检查是否解决了问题。任何给定函数的多次返回都是一个元组。我鼓励您将上面我的lambda上的
type()
的输出与带有
返回y,x
@YogeshMhaskule的命名函数进行比较。问题是“是否有任何方法…”,而不是“单独”。请重新阅读问题。由于答案的清晰性和卓越性,我们投了赞成票。@FedericoS感谢您的解释。但是,对于您共享的代码,我已经得到了基于最大权重的路径。因此get_weight()返回权重,并选择并返回具有最大值的路径。现在,我还想返回返回的路径的权重。不确定您的代码是否也会这样做。不管怎样,我知道你想说什么了。谢谢你,同样的。干得好。我同意这个答案。展示任何实际的解决方案是好的,然后留给提问者检查是否解决了问题。