【发布时间】:2015-11-22 23:29:37
【问题描述】:
检查此Ruby convert array to nested hash 和其他网站后,我无法实现以下转换:
我有这个:
{"a"=>"text"}
{"b"=>{"x"=>"hola"}}
{"b"=>{"y"=>"pto"}
}
我想获得:
{"a"=>text,
b=>{"x" => "hola",
"y" => "pto"
}
}
到目前为止,代码看起来是这样的:
tm =[[["a"],"text"],[["b","x"],"hola"],[["b","y"],"pto"]]
q = {}
tm.each do |l|
q = l[0].reverse.inject(l[1]) { |p, n| { n => p } }
i += 1
end
我尝试使用merge,但它会覆盖键!我也试过这个How can I merge two hashes without overwritten duplicate keys in Ruby?,但它一直在覆盖。
更新:
如何为未定义的嵌套哈希(级别)执行此操作? hash[key1][key2][key3]... = "value"
{"a"=>"text"},
{"b"=>{"x"=>"hola"},
{"b"=>{"y"=>"pto"},
{"c"=>{"g"=>{"k" => "test1"}},
...
}
【问题讨论】:
-
投反对票的人没有理由。没有研究努力?我认为我的问题比stackoverflow.com/questions/8415240/merge-ruby-hash 要好得多。这个问题有很多赞成票。下次不要为了好玩。