создать новый хэш с разными ключами - PullRequest
0 голосов
/ 10 марта 2011
hash = { 
  "key1_sub1" => [0, 1, 2], 
  "key2_sub2" => [1, 12], 
  "key3_sub1" => [4, 5, 6] 
}

есть ли один лайнер вернет мне новый хэш

он находит значение хеша, соответствующее шаблону ключа "_sub1" в исходном хеше, создает новый ключ, удаляя "_sub1"

new_hash = { "key1" => [0, 1, 2], "key3" => [4, 5, 6] }

Ответы [ 2 ]

2 голосов
/ 10 марта 2011
hash.each_with_object({}){|(k, v), h| h[k.sub(/_sub1/, '')] = v if k[/_sub1/]}
1 голос
/ 10 марта 2011

Это должно работать:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...