连接哈希的两个值以在 ruby 中形成哈希

Join two values of a hash to form a hash in ruby

我有一个包含键 "parameter_name" 和 "parameter_value" 的散列,我想生成一个包含一个键值对的散列,"parameter_name" 的值是键, "parameter_value" 的值是值。 哈希看起来像这样:

p = {"parameter_name"=>"NumberOfRetries", "parameter_value"=>"3"}

我希望输出的方式是这样的,

{"NumberOfRetries"=>"3"}

我试过:

a = p.values.map {|v| v1,v2=v[0],v[1]; {v1=>v2} }

但这样做不会 return 正确的输出,它会产生以下内容,

[{"N"=>"u"}, {"3"=>nil}]

有人可以帮我解决这个问题吗? 谢谢。

试试这个。

a = Hash[*p.map(&:last)]

I have a hash with keys, "parameter_name" and "parameter_value", and want to produce a hash with one key-value pair, the value of "parameter_name" being the key and the value of "parameter_value" being the value.

要获得 "parameter_name" 的值,您将使用:(给定您的示例哈希 p

p["parameter_name"] #=> "NumberOfRetries"

对于"parameter_value"的值:

p["parameter_value"] #=> "3"

具有单个 key / value 对的哈希是通过以下方式创建的:(分配给 a

a = { key => value }

使用 "paramter_name" 的值作为 key"parameter_value" 的值作为 value 给出:

a = { p["parameter_name"] => p["parameter_value"] }
#=> { "NumberOfRetries" => "3" }

通过键引用散列值可确保无论散列顺序如何,或者是否存在不相关的键/值对,都可以正常工作,例如:

p = { "parameter_value"=>"3", "foo"=>"bar", "parameter_name"=>"NumberOfRetries" }

a = { p["parameter_name"] => p["parameter_value"] }
#=> { "NumberOfRetries" => "3" }