簡體   English   中英

ruby將新的鍵值對添加到嵌套哈希

[英]ruby add new key-value pair to nested hash

假設我們在這里有一個嵌套哈希。

a = {:"0" => {:CA => {:count => 10}}}

如果我們想要為該哈希添加新的哈希對,比如說

a = {:"0" => {:NY => {:count => 11}}} 

讓它成為

a = {:"0" => {:CA => {:count =>10}, :NY => {:count => 11}}}

我該怎么辦?

我試過了

a[:0][:NY][:count] = 11

但得到錯誤“undefined method` [] ='為nil:NilClass(NoMethodError)”

您收到nil:NilClass錯誤,因為您正在嘗試設置尚不存在的哈希鍵。 您需要創建作為密鑰值的哈希值:NY。

a[:"0"].merge!({:NY => {:count => 11}})

要么

a[:"0"][:NY] = {:count => 11}

我的猜測是你想做這樣的事情。

a = {:"0" => {:CA => {:count => 10}}}
b = {:"0" => {:NY => {:count => 11}}} 
a[:"0"][:NY] = b[:"0"][:NY] #=> {:"0"=>{:CA=>{:count=>10}, :NY=>{:count=>11}}}

你也可以利用合並

a = {:"0" => {:CA => {:count => 10}}}
b = {:"0" => {:NY => {:count => 11}}} 
a[:"0"] = a[:"0"].merge(b[:"0"]) #=> {:"0"=>{:CA=>{:count=>10}, :NY=>{:count=>11}}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM