更好的数组哈希转换方式

Pau*_*den 1 ruby arrays hash ruby-1.9

我有一个数组,我想将其转换为哈希.我希望数组元素是键,所有值都相同.

这是我的代码:

h = Hash.new
myarr.each do |elem|
  h[elem] = 1
end
Run Code Online (Sandbox Code Playgroud)

一种替代方案如下.我不认为它与上述解决方案有很大不同.

h = Hash[ *myarr.collect { |elem| [elem, 1] }.flatten ]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法可以做到这一点?

Aru*_*hit 6

代码OP写的,也可以写成: -

a = %w(a b c d)
Hash[a.each_with_object(1).to_a]
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
Run Code Online (Sandbox Code Playgroud)

如果你有Ruby版本> = 2.1,那么

a.each_with_object(1).to_h
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
Run Code Online (Sandbox Code Playgroud)