Question

Contexte: Dans Ruby je un tableau 2D comme suit:

count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
 ["my", "voiture"]=>0.2,
 ["red", "maison"]=>0.9,
...
}

(La raison pour laquelle je l'ai fait plutôt que count[english_word][french_word] était je ne savais pas comment contourner les erreurs FNUD, et j'ai vu cette syntaxe suggérée sur Stack Overflow)

J'ai rempli la structure de données avec une paire de boucles imbriquées à l'aide d'un des tableaux de english_vocab et french_vocab de tous les mots.

Question:. Je voudrais être en mesure d'obtenir le maximum d'un mot anglais donné

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

Je peux le faire avec une simple boucle imbriquée, mais je me demande s'il y a une plus belle façon Ruby-ish de faire la même chose?

Était-ce utile?

La solution

Je pense qu'il est beaucoup plus facile que vous pensez qu'il est.

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

puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top