gpt4 book ai didi

ruby - 如果指定键的值在数组中相同,如何合并哈希

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:30 24 4
gpt4 key购买 nike

我有一个这样的哈希数组:

[ {:foo=>2, :date=>Sat, 01 Sep 2014},
{:foo2=>2, :date=>Sat, 02 Sep 2014},
{:foo3=>3, :date=>Sat, 01 Sep 2014},
{:foo4=>4, :date=>Sat, 03 Sep 2014},
{:foo5=>5, :date=>Sat, 02 Sep 2014}]

如果 :date 相同,我想合并哈希值。我对上面数组的期望是:

[ {:foo=>2, :foo3=>3, :date=>Sat, 01 Sep 2014},
{:foo2=>2, :foo5=>5 :date=>Sat, 02 Sep 2014},
{:foo4=>4, :date=>Sat, 03 Sep 2014}]

我该怎么做?

也许我应该重新考虑数据结构本身?例如,我应该使用 date 值作为散列的键吗?

最佳答案

这是你如何在一行中完成它(demo):

hashes.group_by{|h| h[:date] }.map{|_, hs| hs.reduce(:merge)}

此代码执行以下操作:

  • :date 值对所有散列进行分组
  • 对于每个 :date 组,获取其中的所有散列并将它们全部合并为一个散列

编辑: 应用了 tokland 和 Cary Swoveland 建议的修改。谢谢!

关于ruby - 如果指定键的值在数组中相同,如何合并哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27249327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com