使用Ruby从旧的哈希创建新哈希

时间:2015-07-02 07:48:15

标签: ruby hash

我有一些simple_hash:

old_hash = {"New"=>"0"}

我想将其转换为新格式:

new_hash = old_hash.keys.each do |key|
  hash = Hash.new
  hash[key] = {count: old_hash[key]}
  hash
end

但是此代码返回给我:

["New"] 

而不是:

{"New"=>{:count=>"0"}}

问题是为什么?

2 个答案:

答案 0 :(得分:2)

您将块的语法与方法的语法混淆。在您的代码中,new_hash获取old_hash.keys的值,这不是您想要的。

稍作修改:

new_hash = Hash.new

old_hash.keys.each do |key|
  new_hash[key] = {count: old_hash[key]}
end

答案 1 :(得分:0)

这样做:

hash = Hash.new
new_hash = old_hash.keys.each do |key|
 hash[key] = {count: old_hash[key]}
 hash
end

hash
# => {"New"=>{:count=>"0"}}

由于您在循环中放置了hash = Hash.new,因此每次都会创建一个新哈希。