"title1"}, {:id=-6ren">
gpt4 book ai didi

ruby - 合并数组中的哈希 [ruby]

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

我有哈希数组

[{:id=>2, :price_psm=>450, :rooms_count=>3, :sq=>50, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>40, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>41, :tax_inc=>"t", :title=>"title1"},
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]

我如何合并相同的散列并创建这样的东西:

[{:id=>2, :price_psm=>[450,499,499], :rooms_count=>3, :sq=>[50,40,41], :tax_inc=>"t", :title=>"title1"}, 
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]

最佳答案

类似于:

require 'pp'

INPUT = [{:id=>2, :price_psm=>450, :rooms_count=>3, :sq=>50, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>40, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>41, :tax_inc=>"t", :title=>"title1"},
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]



RES = INPUT.group_by {|row| row[:id] }.collect do |k,v|
keys = v.collect {|rec| rec.keys}.flatten.uniq
group = {}
keys.each do |key|
vals = v.collect { |rec| rec[key] }.uniq.compact
group[key] = vals.size > 1 ? vals : vals.first
end
group
end

pp RES

关于ruby - 合并数组中的哈希 [ruby],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460551/

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