ruby - 一个哈希中的多个子哈希

标签 ruby regex hash

我有一个散列:

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/

相关文章:

python - 使用正则表达式从python列表中删除元素

arrays - 关于数组的问题之间的区别

python - MD5 哈希 转到 Python

ruby-on-rails - 如果页面有 404 状态,rails 添加 css 类

mysql - Activerecord "where"数组属性的条件

regex - 用 N 个字符替换行首的 N 个空格

ruby-on-rails - 让 'form_for(@something)' 在 new.html.erb 之外工作

ruby-on-rails - Ruby 中的电话号码正则表达式 - ^$ 的 anchor 错误

java - java回文错误

function - 有没有温和的哈希函数教程?