如何在哈希红宝石中插入哈希

时间:2014-09-22 06:47:43

标签: ruby hash

我想知道如何将哈希插入另一个哈希。例如,在:

{"abcd"=>{}, "hgfe"=>34567}

我想将"hgfe" => 34567放入"abcd"密钥。

输出:

{"abcd"=>{"hgfe" => 34567}}

我想转换此哈希

" ##### RUBY HASH ####

(1) INPUT
{
  'abcd.hgfe' => 34567,
  'abcd.efgh.hijk' => 12345,
  'abcd.efgh.ijkl' => 56789,
  'wxyz.abcd' => 9876,
  'wxyz.uvwx.abcd' => 23456,
}
(1) OUTPUT
{
  'abcd' => {
    'efgh' => {
      'hijk' => 12345,
      'ijkl' => 56789
    },
    'hgfe' => 34567,
   },
  'wxyz' => {
    'abcd' => 9876,
    'uvwx' => {'abcd' => 23456}
  }
}

"

我的代码:

def method1(hash)
  result = {}
  array2 = []

  hash.each_pair do|k, v|
    array1 = k.split('.')
    count = array1.length
    hash2 = {}

    array1.each_with_index do |str, index|

        if (index + 1) == count
            hash2[str] = v
        else
            hash2[str] = {} 


        end

    end

    puts hash2.inspect
    puts "--------------"

  end

  result

end


hash_result = method1(h2c)

2 个答案:

答案 0 :(得分:3)

执行以下操作

hash = {"abcd"=>{}, "hgfe"=>34567}
hash['abcd']['hgfe'] = hash.delete('hgfe')
hash # => {"abcd"=>{"hgfe"=>34567}}

你可以写下面的内容:

def delete_key_and_add_to_another_key(hash, update_key, del_key)
  hash[update_key][del_key] = hash.delete(del_key)
  hash
end

hash = {"abcd"=>{}, "hgfe"=>34567}
delete_key_and_add_to_another_key(hash, 'abcd', 'hgfe')

答案 1 :(得分:0)

h = {"abcd"=>{}, "hgfe"=>34567}
f, l = h.partition { |_,v| v =={} }.flatten(1)
{ f.first=> { l.first => l.last } }
  #=> {"abcd"=>{"hgfe"=>34567}}