创建一个哈希,其中键是字符串,值是数字

Mel*_*bel 1 ruby

我有一个数组:

["Melanie", "149", "Joe", "2", "16", "216", "Sarah"]
Run Code Online (Sandbox Code Playgroud)

我想创建一个哈希:

{"Melanie"=>[149], "Joe"=>[2, 16, 216] "Sarah"=>nil}
Run Code Online (Sandbox Code Playgroud)

当键和值在同一个数组中时,我该如何实现?

所有值都是整数(尽管它们在数组中是字符串形式.)所有键都以字母开头和结尾.

saw*_*awa 6

您预期的哈希值无效.因此,你不可能得到你想要的东西.

从您的问题来看,期望值为数组看起来是合理的.在这种情况下,你可以这样做:

["Melanie", "149", "Joe", "2", "16", "216", "Sarah"]
.slice_before(/[a-z]/i).map{|k, *v| [k, v.map(&:to_i)]}.to_h
# => {"Melanie"=>[149], "Joe"=>[2, 16, 216], "Sarah"=>[]}
Run Code Online (Sandbox Code Playgroud)

只需稍加修改,当数组长度为1时,可以将值设为数字而不是数组,但这不是一个好的设计; 它会引入例外.