5}, {"banana"=>4}, {"orange"=>6}, {"apple"=>4}, {"orange"=>2}] 我如何到达: [{"ap-6ren">
gpt4 book ai didi

ruby - 如何通过相同的键组合数组中多个散列的值

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:50 26 4
gpt4 key购买 nike

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

[{"apple"=>5}, {"banana"=>4}, {"orange"=>6}, {"apple"=>4}, {"orange"=>2}]

我如何到达:

[{"apple"=>9}, {"banana"=>4}, {"orange"=>8}]

最佳答案

还有:

cache = Hash.new { |h, k| h[k] = { k => 0 } }
aoh.flat_map(&:to_a)
.each_with_object(cache) { |(k,v),h| h[k][k] += v }
.values

或者为了更清晰一点,分成更多部分:

cache   = Hash.new { |h, k| h[k] = { k => 0 } }
sum = -> ((k, v), h) { h[k][k] += v }
summary = aoh.flat_map(&:to_a)
.each_with_object(cache, &sum)
.values

有点奇怪的 cache Hash 同时做两件事:

  1. 跟踪到目前为止在其 key 中看到了哪些 key 。
  2. 在其值中跟踪我们想要的最终结果。

关于ruby - 如何通过相同的键组合数组中多个散列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29440437/

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