Как объединить два хэша в новый хэш с одинаковыми ключами

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

 old_payment_schedule = {"0"=>2083333.3333333335, "1"=>2083333.3333333335, "2"=>2083333.3333333335, "3"=>2083333.3333333335, "4"=>2083333.3333333335, "5"=>2083333.3333333335}
remeasurement_schedule = {"0"=>2291666.6666666665, "1"=>2291666.6666666665, "2"=>2291666.6666666665, "3"=>2291666.6666666665, "4"=>2291666.6666666665, "5"=>2291666.6666666665}
final_result = {"0"=>2083333.3333333335, "1"=>2083333.3333333335, "2"=>2083333.3333333335, "3"=>2083333.3333333335, "4"=>2083333.3333333335, "5"=>2083333.3333333335,"6"=>2291666.6666666665, "7"=>2291666.6666666665, "8"=>2291666.6666666665, "9"=>2291666.6666666665, "10"=>2291666.6666666665, "11"=>2291666.6666666665}
 

Привет всем, мне нужно объединить два хэша с одинаковыми ключами и разными значениями в новом хэше, кто-нибудь может объяснить мне, как это сделать, не объединять, потому что это приведет к удалению значений из одного хэша, мне нужно что-то, как я показываю в переменной final_result.
Спасибо.

Ответ №1:

Вы могли бы использовать Array#zip и Hash::[] для генерации желаемого хэша.

 values = old_payment_schedule.values   remeasurement_schedule.values
keys = (0...arr.length)
final_result = Hash[keys.zip(values)]
#=> {0=>2083333.3333333335, 1=>2083333.3333333335, 2=>2083333.3333333335, 3=>2083333.3333333335, 4=>2083333.3333333335, 5=>2083333.3333333335, 6=>2291666.6666666665, 7=>2291666.6666666665, 8=>2291666.6666666665, 9=>2291666.6666666665, 10=>2291666.6666666665, 11=>2291666.6666666665}
 

Кстати, вы можете рассмотреть возможность использования массива, если хэш-ключи будут индексами массива.