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?

War es hilfreich?

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
scroll top