質問
バックグラウンド: 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_vocab
と french_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
ループ用のシンプルなネストでこれを行うことができますが、同じことをするためのより良いルビー風の方法があるかどうか疑問に思っていますか?
解決
あなたが思っているよりもずっと簡単だと思います。
hash = {
["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
}
puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
所属していません StackOverflow