ruby - Ruby - 基于相似哈希键的哈希数组
问题描述
我有一个哈希数组,看起来像:
[{"PROJECT"=>"awesome_project1","VERSION"=>128, "STATUS"=>"not required"},
{"PROJECT"=>"awesome_project2", "VERSION"=>32, "STATUS"=>"finished"},
{"PROJECT"=>"awesome_project1", "VERSION"=>64, "STATUS"=>"scheduled"}]
而且我正在尝试基于其中一个 hask 键合并散列,因为我知道 group_by 的键可以更改。因此,如果我想 group_by "PROJECT" 它看起来像:
[{"PROJECT"=>"awesome_project1","VERSION"=>[128,64], "STATUS"=>["not required","scheduled"]},
{"PROJECT"=>"awesome_project2", "VERSION"=>32, "STATUS"=>"finished"}]
目前最接近结果的是使用 group_by。
你知道怎么做吗?
解决方案
您需要group_by
然后将reduce
值合并它们。
input.
group_by { |h| h["PROJECT"] }.
values.
map do |v|
v.reduce({}) do |acc, h|
acc.merge(h) { |_, v1, v2| v1 == v2 ? v1 : [*v1, *v2] }
end
end
#⇒ [{"PROJECT"=>"awesome_project1",
# "VERSION"=>[128, 64],
# "STATUS"=>["not required", "scheduled"]},
# {"PROJECT"=>"awesome_project2",
# "VERSION"=>32,
# "STATUS"=>"finished"}]
推荐阅读
- r - 如何在给定字符串处分隔数据文件中的列?
- php - 数组中的 div 回显多次出现
- google-cloud-platform - 嵌入式实体和使用 GCP 数据存储上的祖先路径的实体之间的区别
- sql - 如何通过从 SQL 查询中删除分隔符来获取记录
- python - 使用关键字参数“{'pk': ''}' 未找到“plan_edit”的反向。尝试了 1 种模式:['palan/edit$']
- tensorflow - 为什么 AdamOptimizer 无法找到最小化 x*x 的最优值?
- android - 如何将材料组件库中的芯片添加到android中的输入字段?
- java - java.net.SocketException:连接重置-在tomcat中部署为webapps的客户端和服务器之间
- java - 在数组中查找重复项
- javascript - 将 DateTime 推送到 Javascript 数组