2014-02-25 25 views
2

我有一個以numpy數組作爲值的python字典。我需要遍歷所有鍵並將自定義函數應用於每個值。該函數返回一個float64數字。然後,我需要得到其返回的最大值的元素的關鍵應用自定義函數後得到字典最大值的Pythonic方式

這是到目前爲止我的代碼(應用功能之後),但我認爲應該做一個Python的方式:

max = -999 
match = 0 
for c in Centroids.keys(): 
    corr = Functions.Correlation_fast(tmp, Centroids[c]) 
    if corr > max: 
     max = corr 
     match = c 

在這種情況下匹配將具有最大價值的字典的關鍵。

必須有更好的辦法來達到同樣的效果,你怎麼看?

回答

3

使用max

max(Centroids, key=lambda x: Functions.Correlation_fast(tmp, Centroids[x])) 
+0

是的,我得到以下錯誤:類型錯誤: 'numpy.float64' 對象不是可調用 –

+1

這應該只是罰款。你放棄了'lambda'嗎? – user2357112

+1

@MartijnPieters:OP使用NumPy數組,但'Centroids'是一個字典,'Correlation_fast'返回一個float64。如果不重構'Centroids'不是一個字典,這可能是一樣好。 – user2357112

相關問題