2010-08-29 41 views
2

背景:在Ruby中我有一个二维数组,如下所示:以更粗鲁的方式获取2d数组的最大值?

count[[english_word, french_word]] = ... 
pp count 
{["my", "une"]=>0.0, 
["my", "voiture"]=>0.2, 
["red", "maison"]=>0.9, 
... 
} 

(我之所以这样做,而不是count[english_word][french_word]是我不知道如何让周围的未定义的错误,我看到了这个语法建议堆栈溢出)

我用一对嵌套循环使用english_vocabfrench_vocab所有单词的数组填充数据结构。

问题:我希望能够获得给定英文单词的最大值。

english_word = 'foo' 
max_count = 0 
french_vocab.each do |french_word| 
    count = count[[english_word, french_word]] 
    if count > max_count 
     max_count = count 
    end 
end 

我可以用一个简单的嵌套的for循环做到这一点,但我不知道是否有做同样的事情的一个更好的红宝石十岁上下的方式吗?

+0

'count'看起来像什么? – 2010-08-29 05:50:13

+0

这是一个以数组为关键的散列。我已经为原始问题添加了一个示例。 – 2010-08-29 06:13:16

回答

2

我认为这比你想象的要容易得多。

hash = { 
    ["my", "une"]=>0.0, 
    ["my", "voiture"]=>0.2, 
    ["red", "maison"]=>0.9, 
} 

puts hash.find_all{|a| a[0][0] == 'my' }.max[1] 
+0

这工作得很好。谢谢! – 2010-08-30 06:50:38

相关问题