Ruby在哈希中插入键、值元素

Ruby在哈希中插入键、值元素,ruby,hash,set,Ruby,Hash,Set,我想将元素添加到我的哈希列表中,它可以有多个值。这是我的密码。我不知道怎么才能解决它 class dictionary def initialize(publisher) @publisher=publisher @list=Hash.new() end def []=(key,value) @list << key unless @list.has_key?(key)

我想将元素添加到我的哈希列表中,它可以有多个值。这是我的密码。我不知道怎么才能解决它

class dictionary

  def initialize(publisher)             
    @publisher=publisher
    @list=Hash.new()                    
  end

  def []=(key,value)
    @list << key unless @list.has_key?(key)
    @list[key] = value
  end

end


dic = Dictionary.new

dic["tall"] = ["long", "word-2", "word-3"]

p dic
类字典
def初始化(发布服务器)
@发布者=发布者
@list=Hash.new()
结束
def[]=(键,值)

@我想这就是你想要做的

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"]

也许,您想合并两个哈希

my_hash = { "key1"=> value1 }
another_hash = { "key2"=> value2 }
my_hash.merge(another_hash) # => { "key1"=> value1, "key2"=> value2 }

你得到了什么结果?在这样的问题中,如果您包含“我期望结果但得到结果”,则会很有帮助。OP似乎希望避免重复,因此您可能希望对哈希值使用集合而不是数组。@glenn,这可以避免重复键。@macek和@glenn您的意思是这样的吗?def[]=(键,值)如果@data.empty?(key)@data[key]@kokogyi,您需要粘贴一组输入和预期输出,否则我无法进一步帮助您。编辑你的问题,我会尽力帮助你。@macek,不是重复的键,而是重复的值--
d['foo']='bar';d['foo']=%w{bar baz};d['foo']#==>[“bar”、“bar”、“baz”]
my_hash = { "key1"=> value1 }
another_hash = { "key2"=> value2 }
my_hash.merge(another_hash) # => { "key1"=> value1, "key2"=> value2 }