如何将数组转换为具有指定公共值的哈希

Kri*_*rni -1 ruby arrays hash

我有一个数组: arr = [:a, :b, :c]

我想要一个哈希,其中上述每个值都是一个空值为空的哈希作为其值: hsh = {a: {}, b: {}, c: {}}

什么是最简洁的方式(并且有性能权衡)?

这是我目前的解决方案:

arr.inject({}) do |hash, entry|
  hash[entry] = {}
  hash
end
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 9

您可以使用each_with_object而不是inject避免返回值:

arr.each_with_object({}) { |k, h| h[k] = {} }
#=> {:a=>{}, :b=>{}, :c=>{}}
Run Code Online (Sandbox Code Playgroud)

修订版中隐藏了一个较短的方法,但Cary不推荐它;-)