Skip to main content
 首页 » 编程设计

python之在python中创建函数以找到所有函数参数中最高的,并返回该值的 "tag"

2025年05月04日10pengyingh

请考虑以下事项: p1=1; p2=5; p3=7; 最高=最大(p1,p2,p3)。

max 函数将返回 7。我希望创建一个类似的函数,它将返回“p3”。我为上面的例子创建了一个小函数(通过简单的比较),如下所示。但是,当参数数量增加时,我遇到了麻烦。

def highest(p1,p2,p3): 
    if (p1>p2) and (p1>p3): 
        return "p1" 
    if (p2>p1) and (p2>p3): 
        return "p2" 
    if (p3>p1) and (p3>p1): 
        return "p3" 

有没有更简单的方法来做到这一点>

请您参考如下方法:

更新:Paul Hankin 指出 max() 采用了一个我不知道的关键函数。所以:

>>> def argmax(**kw): 
...   return max(kw, key=kw.get) 
...  
>>> argmax(foo=3, bar=5, frotz=1, kaka=-3) 
'bar' 

完整性的其他解决方案:

在 Python 2.7 和 3.x 中,您可以使用字典推导。

>>> def argmax(**kw): 
...     wk = {v:k for k,v in kw.items()} 
...     return wk[max(wk)] 
...  
>>> argmax(foo=3, bar=5, frotz=1, kaka=-3)    
'bar' 

字典理解很简洁。 :)

在早期版本的 Python 中,您可以这样做:

>>> def argmax(**kw): 
...     wk = dict([(v,k) for k,v in kw.items()]) 
...     return wk[max(wk)] 
...  
>>> argmax(foo=3, bar=5, frotz=1, kaka=-3)    
'bar' 

这将在 Python 2.2 左右之后的任何东西中工作。