[英]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.