这个问题与这个问题相反.
给定一个散列,每个键都有一个数组
{
[:a, :b, :c] => 1,
[:a, :b, :d] => 2,
[:a, :e] => 3,
[:f] => 4,
}
Run Code Online (Sandbox Code Playgroud)
将它转换为嵌套哈希的最佳方法是什么?
{
:a => {
:b => {:c => 1, :d => 2},
:e => 3,
},
:f => 4,
}
Run Code Online (Sandbox Code Playgroud)
这是一个迭代解决方案,一个递归解决方案留给读者作为练习:
def convert(h={})
ret = {}
h.each do |k,v|
node = ret
k[0..-2].each {|x| node[x]||={}; node=node[x]}
node[k[-1]] = v
end
ret
end
convert(your_hash) # => {:f=>4, :a=>{:b=>{:c=>1, :d=>2}, :e=>3}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1157 次 |
| 最近记录: |