Ruby Hash with duplicate keys?

前端 未结 2 1342
陌清茗
陌清茗 2020-11-29 09:05

Is it possible to create a hash in Ruby that allows duplicate keys?

I\'m working in Ruby 1.9.2.

相关标签:
2条回答
  • 2020-11-29 09:47

    Two ways of achieving duplicate keys in a hash:

    h1 = {}
    h1.compare_by_identity
    h1["a"] = 1
    h1["a"] = 2
    p h1 # => {"a"=>1, "a"=>2}
    
    
    h2 = {}
    a1 = [1,2,3]
    a2 = [1,2]
    h2[a1] = 1
    h2[a2] = 2
    a2 << 3 
    p h2 # => {[1, 2, 3]=>1, [1, 2, 3]=>2}
    
    0 讨论(0)
  • 2020-11-29 09:56

    This would kinda defeat the purpose of a hash, wouldn't it?

    If you want a key to point to multiple elements, make it point to an array:

    h = Hash.new { |h,k| h[k] = [] }
    h[:foo] << :bar
    h #=> {:foo=>[:bar]}
    h[:foo] << :baz
    h #=> {:foo=>[:bar, :baz]}
    
    0 讨论(0)
提交回复
热议问题