2014-02-25 21 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

相关问题