【问题标题】:Ruby: merge two hash as one and with value connectedRuby:将两个哈希合并为一个并连接值
【发布时间】:2011-02-21 17:09: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" }

最好的方法是什么?谢谢!

【问题讨论】:

    标签: ruby hash merge


    【解决方案1】:

    你的意思是:

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

    注意哈希是无序的,如果你想要一个有序的哈希,你可能需要查看at this

    【讨论】:

    • 你的“看看这个”链接失效了,Sam。
    【解决方案2】:
    h = h1.merge(h2){|key, first, second| first + " " + second }
    

    如果您的密钥相同,它将起作用。在您的代码中,它们不是(“s1”与“s1 =”)。它们应该是相同的键吗?

    【讨论】:

    • 感谢您回答 Chubas。但是,如果 h1h2 没有相同的键,则逻辑中断。有什么办法解决这个问题吗?
    猜你喜欢
    • 2017-12-18
    • 2013-09-09
    • 2016-09-02
    • 1970-01-01
    • 2016-01-06
    • 2014-11-11
    • 2019-04-12
    • 2014-06-15
    • 2012-09-16
    相关资源
    最近更新 更多