المبرمج العربي نشر 23 يناير 2016 أرسل تقرير نشر 23 يناير 2016 أريد الحصول على هاش يحتوي على عدد تكرارات كل عنصر في مصفوفة معينة، فلو كان لدي المصفوفة التالي:a = ['cat','dog','fish','fish'] فأريد الحصول على التالي:a2 = {'cat' => 1, 'dog' => 1, 'fish' => 2} فما الطريقة الصحيحة لفعل ذلك في روبي؟ اقتباس
0 هشام رزق الله نشر 23 يناير 2016 أرسل تقرير نشر 23 يناير 2016 يوجد عدة طرق في لغة روبي لفعل ذلك، فيمكنك على سبيل المثال استخدام group_by مع map وcount كما في المثال التالي:>> res=Hash[a.group_by {|x| x}.map {|k,v| [k,v.count]}] => {"cat"=>1, "dog"=>1, "fish"=>2} أو يمكنك استخدام تابع reduce مع Hash.new كما في المثال التالي:a2 = a.reduce(Hash.new(0)) { |a, b| a[b] += 1; a } => {"cat"=>1, "fish"=>2, "dog"=>1} ومن الطرق الأخرى أيضا يمكنك استخدام توابع uniq و each للتكرار وcount لحساب عدد تكرارات العنصر كالتالي:a2 = {} a.uniq.each{|e| a2[e]= a.count(e)} اقتباس
السؤال
المبرمج العربي
أريد الحصول على هاش يحتوي على عدد تكرارات كل عنصر في مصفوفة معينة، فلو كان لدي المصفوفة التالي:
فأريد الحصول على التالي:
فما الطريقة الصحيحة لفعل ذلك في روبي؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.