转换此数组:
a = ["item 1", "item 2", "item 3", "item 4"]
...to a Hash:
{ "item 1" => "item 2", "item 3" => "item 4" }
也就是说,偶数索引处的元素是键,奇数索引处的元素是值。
发布于 2010-10-27 05:55:40
a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }
就这样。*
被称为splat运算符。
每个@Mike Lewis (在评论中)有一个警告:“要非常小心。Ruby在堆栈上扩展了splats。如果你是在一个大型数据集上这样做,那么你的堆栈可能会被打爆。”
因此,对于大多数通用用例,这种方法是很好的,但如果您想对大量数据进行转换,请使用不同的方法。例如,@Łukasz Niemier (也在评论中)为大型数据集提供了这种方法:
h = Hash[a.each_slice(2).to_a]
发布于 2014-01-14 05:40:07
Ruby2.1.0在数组上引入了一个to_h
方法,如果原始数组由键-值对组成的数组组成,该方法就会执行所需的操作:http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-to_h。
[[:foo, :bar], [1, 2]].to_h
# => {:foo => :bar, 1 => 2}
发布于 2010-10-27 05:56:33
只需对数组中的值使用Hash.[]
即可。例如:
arr = [1,2,3,4]
Hash[*arr] #=> gives {1 => 2, 3 => 4}
https://stackoverflow.com/questions/4028329
复制相似问题