Ruby Inserting Key, Value elements in Hash

后端 未结 2 1766
别那么骄傲
别那么骄傲 2021-02-08 01:15

I want to add elements to my Hash lists, which can have more than one value. Here is my code. I don\'t know how I can solve it!

class dictionary

  def initializ         


        
相关标签:
2条回答
  • 2021-02-08 01:33

    I think this is what you're trying to do

    class Dictionary
      def initialize()
        @data = Hash.new { |hash, key| hash[key] = [] }
      end
      def [](key)
        @data[key]
      end
      def []=(key,words)
        @data[key] += [words].flatten
        @data[key].uniq!
      end
    end
    
    d = Dictionary.new
    d['tall'] = %w(long word1 word2)
    d['something'] = %w(anything foo bar)
    d['more'] = 'yes'
    
    puts d.inspect
    #=> #<Dictionary:0x42d33c @data={"tall"=>["long", "word1", "word2"], "something"=>["anything", "foo", "bar"], "more"=>["yes"]}>
    
    puts d['tall'].inspect
    #=> ["long", "word1", "word2"]
    

    Edit

    Now avoids duplicate values thanks to Array#uniq!.

    d = Dictionary.new
    d['foo'] = %w(bar baz bof)
    d['foo'] = %w(bar zim)     # bar will not be added twice!
    
    puts d.inspect
    #<Dictionary:0x42d48c @data={"foo"=>["bar", "baz", "bof", "zim"]}>
    
    0 讨论(0)
  • 2021-02-08 01:55

    Probably, you want to merge two Hashes?

    my_hash = { "key1"=> value1 }
    another_hash = { "key2"=> value2 }
    my_hash.merge(another_hash) # => { "key1"=> value1, "key2"=> value2 }
    
    0 讨论(0)
提交回复
热议问题