Соедините два значения хэша, чтобы сформировать хэш в ruby

У меня есть хеш с ключами «имя_параметра» и «параметр_значение», и я хочу создать хеш с одной парой ключ-значение, значение «имя_параметра» является ключом, а значение «параметр_значение» является значением. Хеш выглядит примерно так:

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

То, как я хочу, чтобы вывод был похож,

{"NumberOfRetries"=>"3"}

Я пытался:

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

но выполнение этого не возвращает правильный вывод, и это производит следующее,

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

Может ли кто-нибудь помочь мне с этим? Благодарю.

Всего 2 ответа


У меня есть хеш с ключами «имя_параметра» и «параметр_значение», и я хочу создать хеш с одной парой ключ-значение, значение «имя_параметра» является ключом, а значение «параметр_значение» является значением.

Чтобы получить значение "parameter_name" вы должны использовать: (учитывая ваш пример хеш p )

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

для значения "parameter_value" :

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

Хеш с одной парой ключ / значение создается с помощью: (присваивается)

a = { key => value }

Использование значения "paramter_name" качестве ключа и значения "parameter_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" }

Попробуй это.

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

Есть идеи?

10000