首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby在Hash中插入键、值元素

Ruby在Hash中插入键、值元素
EN

Stack Overflow用户
提问于 2010-05-04 23:57:32
回答 2查看 38.3K关注 0票数 12

我想将元素添加到我的Hash列表中,它可以有多个值。这是我的代码。我不知道我该怎么解决这个问题!

代码语言:javascript
复制
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

在此之前,非常感谢您。

致以敬意,

科科

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-05 00:15:37

我想这就是你想要做的

代码语言:javascript
复制
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"]

编辑

多亏了Array#uniq!,现在避免了重复的值。

代码语言:javascript
复制
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"]}>
票数 11
EN

Stack Overflow用户

发布于 2012-05-13 21:19:34

也许,您想合并两个散列?

代码语言:javascript
复制
my_hash = { "key1"=> value1 }
another_hash = { "key2"=> value2 }
my_hash.merge(another_hash) # => { "key1"=> value1, "key2"=> value2 }
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2766877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档