У меня есть вложенный ха sh данных:
munsters = {
"Herman" => { "age" => 32, "gender" => "male" },
"Lily" => { "age" => 30, "gender" => "female" },
"Grandpa" => { "age" => 402, "gender" => "male" },
"Eddie" => { "age" => 10, "gender" => "male" },
"Marilyn" => { "age" => 23, "gender" => "female"}
}
Я хочу, чтобы l oop через га sh для каждого члена и найдите его возраст во вложенном ха sh.
Для каждого члена я хочу добавить новую пару ключ / значение в существующий вложенный га sh с именем " age_group ".
Значение" age_group "каждого участника будет зависеть от его возраста. Например, если возраст старше 65 лет, я хочу, чтобы их возрастная группа читалась как «сеньор», et c.
Проблемы, с которыми я сталкиваюсь:
Я не понимаю, как получить доступ к паре «возраст» key_value вложенного ха sh, когда первый ключ различен для каждого члена семьи. Это значит, что я не могу сделать что-то вроде munsters["age"]
, потому что это возвращает ноль (при условии, что «возраст» является вложенным).
Если бы у меня был простой (не вложенный) ха sh, это довольно просто. Пример не вложенного ха sh:
ages = { "Herman" => 32, "Lily" => 30, "Grandpa" => 402, "Eddie" => 10 }
Я бы тогда, вероятно, l oop, хотя бы так:
age_group = {}
ages.each do |k, v|
if v >= 65
puts "#{k}'s age of #{v} makes them a senior!"
age_group.merge!("age_group": "senior")
elsif v > 17 && v < 65
puts "#{k}'s age of #{v} makes them an adult"
age_group.merge!("age_group": "adult")
else
puts "#{k}'s age of #{v} makes them a kid."
age_group.merge!("age_group": "kid")
end
end
Для вложенного ха sh, I Я могу получить доступ ко всему вложенному ха sh следующим образом:
munsters.each do |k, v|
v.each do |k2, v2|
p "k2 is #{k2} and v2 is #{v2}"
end
end
Но это все равно только возвращает весь вложенный ха sh на консоль, а не только возраст:
k2 is age and v2 is 32
k2 is gender and v2 is male