我在SO中查看了其他问题,并没有找到我的具体问题的答案.
我有一个数组:
a = ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
我想将此数组转换为散列,其中数组元素成为散列中的键,并且它们所有相同的值都表示1.即散列应该是:
{"a" => 1, "b" => 1, "c" => 1, "d" => 1}
Run Code Online (Sandbox Code Playgroud)
Bal*_*ick 58
我的解决方案,其中一个:-)
a = ["a", "b", "c", "d"]
h = Hash[a.map {|x| [x, 1]}]
Run Code Online (Sandbox Code Playgroud)
pot*_*hin 20
你可以使用product:
a.product([1]).to_h
#=> {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
Run Code Online (Sandbox Code Playgroud)
或者您也可以使用transpose方法:
[a,[1] * a.size].transpose.to_h
#=> {"a"=>1, "b"=>1, "c"=>1, "d"=>1}
Run Code Online (Sandbox Code Playgroud)
a = ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
4 个更多选项,实现所需的输出:
h = a.map{|e|[e,1]}.to_h
h = a.zip([1]*a.size).to_h
h = a.product([1]).to_h
h = a.zip(Array.new(a.size, 1)).to_h
Run Code Online (Sandbox Code Playgroud)
所有这些选项都依赖于Array#to_h,在 Ruby v2.1 或更高版本中可用