Ruby 如何向同一个键添加多个值
如何向同一个键添加多个值?大概是这样的:Ruby 如何向同一个键添加多个值,ruby,Ruby,如何向同一个键添加多个值?大概是这样的: x = {} x["k1"] = nil x["k1"] << {"a" => "a"} x["k1"] << {"b" => "b"} 2.0.0-p195 :111 > x = {} => {} 2.0.0-p195 :112 > x['k1'] = { 'a' => '1' } => {"a"=>"1"} 2.0.0-p195 :117 > x['k1'].m
x = {}
x["k1"] = nil
x["k1"] << {"a" => "a"}
x["k1"] << {"b" => "b"}
2.0.0-p195 :111 > x = {}
=> {}
2.0.0-p195 :112 > x['k1'] = { 'a' => '1' }
=> {"a"=>"1"}
2.0.0-p195 :117 > x['k1'].merge!({ 'b' => '2' })
=> {"a"=>"1", "b"=>"2"}
2.0.0-p195 :119 > x['k1']['c'] = 3
=> 3
2.0.0-p195 :120 > x['k1']
=> {"a"=>"1", "b"=>"2", "c"=>3}
x={}
x[“k1”]=零
x[“k1”]“a”}
x[“k1”]“b”}
嗯,这和数组不一样 这取决于你在这里想要完成什么。如果需要数组散列,这很简单:
x = {}
x['k1'] = Array.new
x['k1'] << 'a'
x['k1'] << 'b'
散列中的值只是对象。它们可以是数组、其他散列或任何您可能需要的内容。因此,您希望键“k1”的值是散列,并希望将键/值对添加到该散列中。您可以这样做:
x = {}
x["k1"] = nil
x["k1"] << {"a" => "a"}
x["k1"] << {"b" => "b"}
2.0.0-p195 :111 > x = {}
=> {}
2.0.0-p195 :112 > x['k1'] = { 'a' => '1' }
=> {"a"=>"1"}
2.0.0-p195 :117 > x['k1'].merge!({ 'b' => '2' })
=> {"a"=>"1", "b"=>"2"}
2.0.0-p195 :119 > x['k1']['c'] = 3
=> 3
2.0.0-p195 :120 > x['k1']
=> {"a"=>"1", "b"=>"2", "c"=>3}
或者,您可以这样做:
x = {}
x["k1"] = nil
x["k1"] << {"a" => "a"}
x["k1"] << {"b" => "b"}
2.0.0-p195 :111 > x = {}
=> {}
2.0.0-p195 :112 > x['k1'] = { 'a' => '1' }
=> {"a"=>"1"}
2.0.0-p195 :117 > x['k1'].merge!({ 'b' => '2' })
=> {"a"=>"1", "b"=>"2"}
2.0.0-p195 :119 > x['k1']['c'] = 3
=> 3
2.0.0-p195 :120 > x['k1']
=> {"a"=>"1", "b"=>"2", "c"=>3}
您可以执行以下操作:
对于数组
作为散列的键的值
:
h = Hash.new{|hsh,key| hsh[key] = [] }
h['k1'].push 'a'
h['k1'].push 'b'
p h # >> {"k1"=>["a", "b"]}
h = Hash.new{|hsh,key| hsh[key] = {} }
h['k1'].store 'a',1
h['k1'].store 'b',1
p h # >> {"k1"=>{"a"=>1, "b"=>1}}
对于哈希
作为哈希
键的值:
h = Hash.new{|hsh,key| hsh[key] = [] }
h['k1'].push 'a'
h['k1'].push 'b'
p h # >> {"k1"=>["a", "b"]}
h = Hash.new{|hsh,key| hsh[key] = {} }
h['k1'].store 'a',1
h['k1'].store 'b',1
p h # >> {"k1"=>{"a"=>1, "b"=>1}}
简而言之,你不能这样做:一个散列键根据定义只有一个值。
此外,您正在尝试对该代码使用spoot操作符
recoend,它更简单h['k1'],如果您认为多值键值对只不过是一组键值对的一个键,那么您可以想象如何实现针对典型现代散列表示法的映射。与{:key=>value1,value2}
相反,想想{:key=>[{:subkey\u 1=>value\u 1},{:subkey\u 2=>value\u 2}]}
——至少在Ruby中可以这样做。