我有一个数组:
["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)
当键和值在同一个数组中时,我该如何实现?
所有值都是整数(尽管它们在数组中是字符串形式.)所有键都以字母开头和结尾.
您预期的哈希值无效.因此,你不可能得到你想要的东西.
从您的问题来看,期望值为数组看起来是合理的.在这种情况下,你可以这样做:
["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时,可以将值设为数字而不是数组,但这不是一个好的设计; 它会引入例外.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |