2015-05-07 51 views
0

以前可能會問這個問題,但有人知道在Python中實現argmin的優雅方式嗎?也就是說,給定一個字典D將整數映射到整數,我想找到密鑰k,使D [k]最小化。在Python中爲詞典實現argmin

例如:

d = {1: 100, 2:200} 
argmin(d) = 1 

回答

0
def argmin(z): 
    if not z: return None 
    min_val = min(z.values()) 
    return [k for k in z if z[k] == min_val][0] 

z = {1: 50, 2:100, 3:11} 
min_index = argmin(z) 
+0

這是錯誤的,令人難以置信的效率低下。它需要二次時間,它使用'max'而不是'min',並且它使用'is'來使用'=='。 – user2357112

+0

我不是說它不能改進。但是它如何使用二次時間?正如我所見,它是線性的。 – Santiago

+0

@ user3267581:原始版本爲每個密鑰計算'min(z.values())'。 – user2357112