Conseguir 2d gama máxima de una manera más Rubyish?
Pregunta
Antecedentes: en Ruby tengo una matriz 2D como la siguiente:
count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
...
}
(La razón por la que hice esta vez de count[english_word][french_word]
era que no estaba seguro de cómo llegar en torno a los errores UNDEF, y vi esta sintaxis sugerido desbordamiento de pila)
He llenado la estructura de datos con un par de bucles anidados utilizando una english_vocab
y french_vocab
matrices de todas las palabras.
Pregunta:. Me gustaría ser capaz de obtener el máximo de una palabra determinada Inglés
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
Me puede hacer esto con un simple bucle anidado para, pero me pregunto si hay una manera más agradable Rubí-ish de hacer la misma cosa?
Solución
Creo que es mucho más fácil que usted está pensando que es.
hash = {
["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
}
puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow