Получать максимум 2d массива более рубиновым способом? - PullRequest
2 голосов
/ 29 августа 2010

Справочная информация: В Ruby у меня есть двухмерный массив, подобный следующему:

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

Я могу сделать это с помощью простого вложенного цикла for, ноМне интересно, есть ли более хороший Ruby-ih способ сделать то же самое?

1 Ответ

2 голосов
/ 29 августа 2010

Я думаю, что это намного проще, чем вы думаете.

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

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