For the sake of convenience I am trying to assign multiple values to a hash key in Ruby. Here's the code so far
myhash = { :name => ["Tom" , "Dick" , "Harry"] }
Looping through the hash gives a concatenated string of the 3 values
Output:
name : TomDickHarry
Required Output:
:name => "Tom" , :name => "Dick" , :name => "Harry"
What code must I write to get the required output?
The answers from Rohith and pierr are fine in this case. However, if this is something you're going to make extensive use of it's worth knowing that the data structure which behaves like a Hash but allows multiple values for a key is usually referred to as a multimap. There are a couple of implementations of this for Ruby including this one.
The output format is not exactly what you need, but I think you get the idea.
re: the issue of iterating over selective keys. Try using
reject
with the condition inverted instead of usingselect
.e.g. given:
where we want
:name
and:keep
but not:discard
with
select
:The result is a list of pairs.
but with
reject
:The result is a Hash with only the entries you want.
This can then be combined with pierr's answer:
You've created a hash with the symbol name as the key and an array with three elements as the value, so you'll need to iterate through
myhash[:name]
to get the individual array elements.