我有一个哈希:
hash = {"a_1_a" => "1", "a_1_b" => "2", "a_1_c" => "3", "a_2_a" => "3",
"a_2_b" => "4", "a_2_c" => "4"}
Run Code Online (Sandbox Code Playgroud)
获得以下子哈希的最佳方法是什么:
[{"a_1_a" => "1", "a_1_b" => "2", "a_1_c" => "3"},
{"a_2_a" => "3", "a_2_b" => "4", "a_2_c" => "4"}]
Run Code Online (Sandbox Code Playgroud)
我希望它们基于正则表达式按键分组/^a_(\d+)/
.我将在原始哈希中拥有50多个键/值对,因此如果有人有任何建议,动态的东西最有效.
如果您只关心中间组件,可以使用它group_by
来帮助您完成大部分工作:
hash.group_by do |k,v|
k.split('_')[1]
end.values.map do |list|
Hash[list]
end
# => [{"a_1_a"=>"1", "a_1_b"=>"2", "a_1_c"=>"3"}, {"a_2_a"=>"3", "a_2_b"=>"4", "a_2_c"=>"4"}]
Run Code Online (Sandbox Code Playgroud)
最后一步是提取分组列表并将它们组合回所需的哈希值.
归档时间: |
|
查看次数: |
78 次 |
最近记录: |