在Ruby中怎么将一组键和一个值数组转换成一个散列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我有两个这样的数组:

keys = ['a', 'b', 'c']
values = [1, 2, 3]

在Ruby中有一种简单的方法将这些数组转换为以下哈希?

{ 'a' => 1, 'b' => 2, 'c' => 3 }

这是我的方式,但我觉得应该有一个内置的方法来轻松地做到这一点。

def arrays2hash(keys, values)
  hash = {}
  0.upto(keys.length - 1) do |i|
      hash[keys[i]] = values[i]
  end
  hash
end
提问于
用户回答回答于

1.8.7中的以下工作:

keys = ["a", "b", "c"]
values = [1, 2, 3]
zipped = keys.zip(values)
=> [["a", 1], ["b", 2], ["c", 3]]
Hash[zipped]
=> {"a"=>1, "b"=>2, "c"=>3}

这似乎不适用于旧版本的Ruby(1.8.6)。以下应该是向后兼容的:

Hash[*keys.zip(values).flatten]
用户回答回答于

另一种方法是使用each_with_index:

hash = {}
keys.each_with_index { |key, index| hash[key] = values[index] }

hash # => {"a"=>1, "b"=>2, "c"=>3}

扫码关注云+社区