Получение 2D массив максимум более рубинским способом?
Вопрос
Задний план: В Ruby у меня есть 2D Array, как следующее:
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