如何将多个值添加到同一个键

use*_*703 4 ruby

如何在同一个键中添加多个值?像这样的东西:

x = {}
x["k1"] =  nil
x["k1"] << {"a" => "a"}
x["k1"] << {"b" => "b"}
Run Code Online (Sandbox Code Playgroud)

好吧,这不像数组一样工作.

Aru*_*hit 17

你可以这样做:

对于Array作为价值的关键Hash:

h = Hash.new{|hsh,key| hsh[key] = [] }
h['k1'].push 'a'
h['k1'].push 'b'
p h # >> {"k1"=>["a", "b"]}
Run Code Online (Sandbox Code Playgroud)

对于Hash作为价值的关键Hash:

h = Hash.new{|hsh,key| hsh[key] = {} }
h['k1'].store 'a',1
h['k1'].store 'b',1
p h # >> {"k1"=>{"a"=>1, "b"=>1}}
Run Code Online (Sandbox Code Playgroud)


Som*_*Guy 6

取决于你在这里想要完成的事情.如果你想要一个数组哈希,这很容易:

x = {}
x['k1'] = Array.new
x['k1'] << 'a'
x['k1'] << 'b'
Run Code Online (Sandbox Code Playgroud)

或者如果你想要嵌套的哈希,也很简单

x = {}
x['k1'] = {}
x['k1']['a'] = 'a'
x['k1']['b'] = 'b'
Run Code Online (Sandbox Code Playgroud)

哈希中的值只是对象.它们可以是数组,其他哈希,或者您可能想要的任何其他内容.