الحصول على صفيف ثنائي الأبعاد كحد أقصى بطريقة أكثر روبيا؟
سؤال
خلفية: في روبي لدي صفيف ثنائي الأبعاد مثل ما يلي:
count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
...
}
(السبب في أنني فعلت هذا بدلاً من count[english_word][french_word]
هل لم أكن متأكدًا من كيفية الالتفاف على أخطاء UNDEF ، ورأيت هذا الجملة المقترح على سعة مكدس)
لقد ملأت بنية البيانات بزوج من الحلقات المتداخلة باستخدام أ english_vocab
و french_vocab
صفائف من كل الكلمات.
سؤال: أود أن أكون قادرًا على الحصول على أقصى كلمة إنجليزية معينة.
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
يمكنني القيام بذلك مع حلقة متداخلة بسيطة ، لكنني أتساءل عما إذا كانت هناك طريقة أجمل روبي في فعل نفس الشيء؟
المحلول
أعتقد أنه أسهل بكثير مما تفكر فيه.
hash = {
["my", "une"]=>0.0,
["my", "voiture"]=>0.2,
["red", "maison"]=>0.9,
}
puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
لا تنتمي إلى StackOverflow