我有一个散列:
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"}
获取以下子哈希的最佳方法是什么:
[{"a_1_a" => "1", "a_1_b" => "2", "a_1_c" => "3"},
{"a_2_a" => "3", "a_2_b" => "4", "a_2_c" => "4"}]
我希望它们根据正则表达式 /^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"}]
最后一步是提取分组列表并将它们组合回所需的哈希。
关于ruby - 一个哈希中的多个子哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41048587/