Ruby 用不同的键构造一个新的散列

Ruby 用不同的键构造一个新的散列,ruby,Ruby,是否有一个班轮会给我一个新的哈希 它在原始哈希中找到与密钥模式“\u sub1”匹配的哈希值,通过删除“\u sub1”构造新密钥 这应该起作用: new_hash=hash[*hash.keys.map{x | x.gusb/_sub\d$/,'}.zip(hash.values)]这应该可以: new_hash=hash[*hash.keys.map{x|x.gusb/_sub\d$/,'}.zip(hash.values)]使用模式“_sub1”,我只想得到两个匹配,“key1_sub1”

是否有一个班轮会给我一个新的哈希

它在原始哈希中找到与密钥模式“\u sub1”匹配的哈希值,通过删除“\u sub1”构造新密钥

这应该起作用:

new_hash=hash[*hash.keys.map{x | x.gusb/_sub\d$/,'}.zip(hash.values)]

这应该可以:


new_hash=hash[*hash.keys.map{x|x.gusb/_sub\d$/,'}.zip(hash.values)]

使用模式“_sub1”,我只想得到两个匹配,“key1_sub1”和“key2_sub1”,我不想要“key2_sub2”。最后的结果应该是{“key1”=>[0,1,2],“key3”=>[4,5,6]}而不是{“key1”=>[0,1,2],“key2_sub2”=>[1,12],“key3”=>[4,5,6]}我正在移除我的。。。你的更好,我把大部分都偷走了。:-)+1.答案很好。我认为如果没有所有无关的
each_with_object
Hash[Hash.map{k,v |[k.sub(/.+_sub1$/,''),v]if k=~/.+_sub1$/}的样板文件,它更为习惯用法和可读性强
-它在Ruby 1.8.7中也能工作,我想在大多数Rubies中会更快,因为它需要更少的显式消息发送,尽管我还没有进行基准测试。使用模式“\u sub1”,我只想得到两个匹配,“key1\u sub1”和“key2\u sub1”,我不想要“key2\u sub2”。最后的结果应该是{“key1”=>[0,1,2],“key3”=>[4,5,6]}而不是{“key1”=>[0,1,2],“key2_sub2”=>[1,12],“key3”=>[4,5,6]}我正在移除我的。。。你的更好,我把大部分都偷走了。:-)+1.答案很好。我认为如果没有所有无关的
each_with_object
Hash[Hash.map{k,v |[k.sub(/.+_sub1$/,''),v]if k=~/.+_sub1$/}的样板文件,它更为习惯用法和可读性强
-它在Ruby 1.8.7中也能工作,我想在大多数Ruby中会更快,因为它需要更少的显式消息发送,尽管我还没有做过基准测试。
hash = { 
  "key1_sub1" => [0, 1, 2], 
  "key2_sub2" => [1, 12], 
  "key3_sub1" => [4, 5, 6] 
}
new_hash = { "key1" => [0, 1, 2], "key3" => [4, 5, 6] }
hash.each_with_object({}){|(k, v), h| h[k.sub(/_sub1/, '')] = v if k[/_sub1/]}