Ruby: 合并两个哈希表并将值连接为一个

15

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
h = h1.merge(h2){|key, first, second| first + " " + second }

如果你的键值相同,它将起作用。在你的代码中,它们不是相同的("s1" vs "s1=")。它们应该是相同的键吗?


感谢回答Chubas。但是,如果h1h2没有相同的键,那么这个逻辑就会失效。有什么想法可以修复吗? - Swaathi Kakarla

3

你的意思是:

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"}

注意,哈希值是无序的,如果你想要一个有序的哈希表,你可能需要查看这个链接

你的“看这个”的链接失效了,Sam。 - Martin Cleaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接