从一组键创建一个哈希

Den*_*ews 27 ruby arrays hash

我在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)


And*_*iep 5

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 或更高版本中可用