Получение 2D массив максимум более рубинским способом?

StackOverflow https://stackoverflow.com/questions/3593659

  •  01-10-2019
  •  | 
  •  

Вопрос

Задний план: В 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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top