将数组数组转换为哈希值

时间:2016-06-03 13:22:55

标签: arrays ruby hash

如何将数组数组转换为哈希?

arr = [['me',1],['he',2],['she',3]]

我想要

{'me':1,'he':2,'she':3}

我目前的解决方案是

hsh={}
arr.each do |x| p hsh[x[0]] = x[1] end
hsh # => {'me':1,'he':2,'she':3}

但它看起来很难看。我的代码有效,但我正在寻找一种更方便的方法。

3 个答案:

答案 0 :(得分:1)

尝试使用to_h方法

arr = [['me',1],['he',2],['she',3]]
arr.to_h
# => {'me' => 1, 'he' => 2, 'she' => 3}

请注意,这不会将原始字符串转换为符号。我不确定这是否是你问题的一部分。如果是这样,你必须使用Sawa的解决方案。

答案 1 :(得分:0)

arr.map{|k, v| [k.to_sym, v]}.to_h

答案 2 :(得分:0)

首先,我认为你的数组应该是:

arr = [['me',1],[['he',2],['she',3]]]

OR

arr = [['me',1],['he',2],['she',3]]

'['和']'

的数量存在一些问题

一种适用于两者的解决方案如下:

hsh = Hash[*arr.flatten]