Erst 2d Array maximal in einer Rubyish Art und Weise?
Frage
Hintergrund: In Ruby Ich habe ein 2D-Array wie folgt aus:
count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
...
}
(Der Grund, warum ich dies eher als count[english_word][french_word]
tat war, war ich nicht sicher, wie die Undef Fehler zu umgehen, und ich sah diese Syntax auf Stack-Überlauf vorgeschlagen)
Ich habe die Datenstruktur mit einem Paar von verschachtelten Schleifen gefüllt einen english_vocab
und french_vocab
Arrays aller Worte.
. Frage: Ich möchte in der Lage sein, das Maximum eines gegebenen englischen Wort zu bekommen
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
Ich kann dies tun mit einem einfachen for-Schleife verschachtelt, aber ich frage mich, ob es ein schöner Rubin-ish Weg, um die gleiche Sache zu tun?
Lösung
Ich denke, es ist viel einfacher, als Sie denken es ist.
hash = {
["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
}
puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow