背景: 在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] 我不确定如何解决undef错误吗?

我已经用一对嵌套循环填充了数据结构 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

我可以用一个简单的嵌套进行循环做到这一点,但是我想知道是否有一种更好的Ruby-ish方法做同样的事情?

有帮助吗?

解决方案

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

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

puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top