Обновление: Пол Хэнкин указал, что 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'
* 1009аккуратный.:)
В более ранних версиях 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 или около того.