如何将数组数组转换为哈希?
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}
但它看起来很难看。我的代码有效,但我正在寻找一种更方便的方法。
答案 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]