У меня возникли проблемы с итерацией через ряд вложенных хэшей, и я думаю, что это потому, что внутренние хэши называются строками. К сожалению, я не могу просто изменить эти имена. Вот общий хэш рода, что я работаю с:Итерация через вложенные хэши с именами с использованием строк
hash =
"name" => {
"stuff" => "value",
"key" => "value", },
"name" => {
"stuff" => "value",
"key" => "value", },
Я пытаюсь написать программу, которая будет печатать поля помечены как «имя», а значения, в пределах, при вызове имена их ключей. Прямо сейчас, я застрял с
hash.each do |key, value|
puts key
key.each do |stuff, info|
puts info if category == "stuff"
end
end
, но это дает ошибку, что каждый не является признанным методом для ключа, который, я думаю, потому что компьютер обрабатывает его в виде строки из-за его наименовании. У кого-нибудь есть идеи, как я могу исходить отсюда (без изменения имен ключей)?
вы можете дать мне пример вывода? –
Измените, чтобы сделать 'hash' действительным объектом Ruby (т. Е.' Hash = {...} '). Обратите внимание, что ключи хеша должны быть уникальными. Вы можете иметь hash = {"name1" => {"stuff" => "value"}, "name2" => {"stuff" => "value"}} ', но не' hash = {"name" => {"stuff" => "value"}, "name" => {"stuff" => "value"}} ', потому что' 'name" появляется дважды в качестве ключа. –
* Значение * - это вложенный хэш, а не ключ. Вам нужно '.each' по * значению *. Вам также нужно понять, что именовать ваши аргументы блока так же, как строки в хеше ничего не делают. Имена переменных не имеют значения. – meagar