Ruby: объединить два хэша в один и со значением, связанным - PullRequest
15 голосов
/ 20 мая 2010

2 хэша:

h1 = { "s1" => "2009-7-27", "s2" => "2010-3-6", "s3" => "2009-7-27" }

h2 = { "s1" => "12:29:15", "s2" => "10:00:17", "s3" => "12:25:52" }    

Я хочу объединить два хэша как один:

h = { "s1" => "2009-7-27 12:29:15",
      "s2" => "2010-3-6 10:00:17", 
      "s3" => "2009-7-27 2:25:52" }

каков наилучший способ сделать это? спасибо!

Ответы [ 2 ]

35 голосов
/ 20 мая 2010
h = h1.merge(h2){|key, first, second| first + " " + second }

Это будет работать, если ваши ключи одинаковы. В вашем коде это не так ("s1" против "s1 ="). Должны ли они быть одинаковыми ключами?

3 голосов
/ 20 мая 2010

Вы имеете в виду:

Hash[h1.map{|k,v| [k, "#{v} #{h2[k]}"]}]

 => {"s3"=>"2009-7-27 12:25:52", "s1"=>"2009-7-27 12:29:15", "s2"=>"2010-3-6 10:00:17"}

Примечание: хэши не упорядочены, если вы хотите упорядоченный хеш, вам, вероятно, нужно посмотреть на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...