我有一个数组,我想将它转换为散列。我希望数组元素是键,所有值都相同。
这是我的代码:
h = Hash.new
myarr.each do |elem|
h[elem] = 1
end
另一种选择是 following .我认为这与上面的解决方案没有太大区别。
h = Hash[ *myarr.collect { |elem| [elem, 1] }.flatten ]
我有更好的方法吗?
最佳答案
OP写的代码,也可以写成:-
a = %w(a b c d)
Hash[a.each_with_object(1).to_a]
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
如果你的 Ruby 版本 >= 2.1,那么
a.each_with_object(1).to_h
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
关于ruby - 数组到哈希转换的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24602247/