FAQ: Hashes and Symbols - Iterating Over Hashes


This community-built FAQ covers the “Iterating Over Hashes” exercise from the lesson “Hashes and Symbols”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Ruby

FAQs on the exercise Iterating Over Hashes

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

So the exercise says that the following will print out each key and value:

my_hash.each do |key, value|
puts my_hash[ ]

This doesn’t happen. Surely my_hash can’t be empty, but my_hash[key, value] also doesn’t work. Is there a way of printing out a key and value without doing the following:

my_hash.each do |key, value|
puts “#{key}: #{value}”



ggwp :+1:

1 Like

Surely my_hash can’t be empty

Agreed. I’m not sure what the example is trying to achieve with:

puts my_hash[]

but it just causes an error:

wrong number of arguments (given 0, expected 1)

Some possible ways to print the key and value:

puts "#{key}: #{value}"

puts key + ': ' + value.to_s

puts key + ': ' + my_hash[key].to_s

The example is terrible and confused me too. They aren’t asking for the key value pair to be printed though, only the value. So you can just puts value


I don’t get it. One lesson before they say that the first term is the key and the second one is its value. Then in this lesson the code goes like this:

matz = { "First name" => "Yukihiro",
  "Last name" => "Matsumoto",
  "Age" => 47,
  "Nationality" => "Japanese",
  "Nickname" => "Matz"

Then the instruction tells you to print the values, but the hint tells you to print the key:

puts matz[key]

And if you run it like that, it prints the values:


So, which one is the key and the value?

1 Like

For me it ended up printing the right things using the below:
Not sure how correct or incorrect imine is but it gives me the “green” light afterwards.

matz.each do |key, value|

puts value


I noticed this too. It makes zero sense at all. Why does using key print the value? Why isn’t this explained? Furthermore, we’ve learned so far to just use the placeholder for this type of scenario (so we’d just write “puts value”) - why introduce new syntax like this using the array name with brackets and the wrong ■■■■■■ placeholder!? I’m seriously irked by this, though this is a free course and I apologize to staff/everyone if I sound ungrateful.