带有重复键的Ruby Hash?

时间:2011-07-24 18:31:48

标签: ruby hash key

是否可以在Ruby中创建允许重复键的哈希?

我在Ruby 1.9.2中工作。

2 个答案:

答案 0 :(得分:36)

在哈希中实现重复键的两种方法:

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}

答案 1 :(得分:30)

这有点打败哈希的目的,不是吗?

如果您希望某个键指向多个元素,请将其指向一个数组:

h = Hash.new { |h,k| h[k] = [] }
h[:foo] << :bar
h #=> {:foo=>[:bar]}
h[:foo] << :baz
h #=> {:foo=>[:bar, :baz]}