ruby将分隔字符串数组转换为哈希值

Jas*_*ael 1 ruby arrays string hash parsing

我有一个阵列

["bob:12 elm st", "sally:100 digital ave", "tom:2324 elmhurst st"] 
Run Code Online (Sandbox Code Playgroud)

我需要转换为

{"bob" => "12 elm st", "sally" => "100 digital ave", "tom" => "2324 elmhurst st"}.
Run Code Online (Sandbox Code Playgroud)

我知道我能做到

array.each do |e|
  k = e.split(":").first
  v = e.split(":").last
  hash[k] = v
end
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方式来做到这一点?

Yos*_*ssi 8

Hash[] 从数组构造一个哈希.

Hash[array.map {|el| el.split ':'}]
Run Code Online (Sandbox Code Playgroud)


Cer*_*eal 6

我相信ruby 2.1有一个.to_h方法.

为此,

array.map { |i| i.split ':' }.to_h 
Run Code Online (Sandbox Code Playgroud)

将工作.