gpt4 book ai didi

arrays - 从数组中添加哈希

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

我正在尝试从具有相同键和平均值的多个散列数组创建一个数组/散列。我的数组:

[{:amount=>897500, :gross_amount=>897500, :tax=>147500, :hotel_fees=>0, :base_fare=>750000, :currency=>"INR"}, {:amount=>1006500, :gross_amount=>1006500, :tax=>156500, :hotel_fees=>0, :base_fare=>850000, :currency=>"INR"}]

现在我想返回这样的东西:

{:amount=>952000, :gross_amount=>952000, :tax=>152000, :hotel_fees=>0, :base_fare=>800000, :currency=>"INR"}

其中值是具有相同键的每个散列值的平均值。

有没有简单的方法可以做到这一点。我试过使用合并,但货币随之变为 0。

我的尝试:

p[0].merge(p[1]){|k,v1,v2| (v1+v2)/2 unless v1 && v2 == "INR"}

编辑:

实际上我的问题并没有就此结束,所以在获得平均值后我需要将值插入另一个散列中。所以我使用了这样的东西:

        price_array = offer_values.map do |v| 
v.inject do |k, v|
k.merge!(price: k[:price].merge(v[:price]){|_, a, b| [a, b].flatten })
end
end
price_array.map do |o|
o[:price] = {}.tap{ |h| o[:price].each {|k, list| h[k] = list.all?{|e| [Fixnum, NilClass].include? e.class} ? list.map(&:to_i).sum/list.size : list.compact.first ; h } }
end

其中 offer_array 是我的原始/第一个数组在单独的哈希中的那个。我已经尝试使用 2 和 3 个哈希,并且它正在工作。

如果你们有任何关于改进代码的建议,它是开放的。

最佳答案

国税局

2.2.3 :011 > b = {test1: 30, test2: 40}
=> {:test1=>30, :test2=>40}
2.2.3 :012 > a = {test1: 20, test2: 60}
=> {:test1=>20, :test2=>60}
2.2.3 :013 > c = a.merge(b){|key, oldval, newval| (newval + oldval)/2}
=> {:test1=>25, :test2=>50}

关于arrays - 从数组中添加哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44526171/

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