Ottenere il massimo matrice 2D in un modo più Rubyish?
Domanda
Sfondo: In Ruby ho una matrice 2D come il seguente:
count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
...
}
(La ragione per cui ho fatto questo piuttosto che count[english_word][french_word]
era non ero sicuro di come muoversi gli errori undef, e ho visto questa sintassi suggerito su Stack Overflow)
Ho riempito la struttura di dati con un paio di cicli nidificati utilizzando un english_vocab
e french_vocab
array di tutte le parole.
Domanda:. Mi piacerebbe essere in grado di ottenere il massimo di una data parola inglese
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
posso fare questo con un semplice nidificato ciclo for, ma mi chiedo se c'è un modo migliore Ruby-ish di fare la stessa cosa?
Soluzione
Credo che sia molto più facile di quanto si sta pensando che sia.
hash = {
["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
}
puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow