Arrays 在ruby中将哈希数组转换为单个哈希

Arrays 在ruby中将哈希数组转换为单个哈希,arrays,ruby,hash,Arrays,Ruby,Hash,我正在尝试将散列数组转换为散列,其中key是数组中散列元素之一 例如:a=[{“活动账户”:3,“id”:5},{“活动账户”:6,“id”:1} 我想将此数组转换为 a = {5: {"active_accounts": 3}, 1: {"active_accounts": 6}} 我尝试通过在数组上循环并访问特定密钥的单个散列来实现这一点,但这似乎不起作用。任何线索都将不胜感激。安全变量,映射到数组(相同的“id”应得到正确处理): 正是你问的: a.group_by { |e| e.de

我正在尝试将散列数组转换为散列,其中key是数组中散列元素之一

例如:
a=[{“活动账户”:3,“id”:5},{“活动账户”:6,“id”:1}

我想将此数组转换为

a = {5: {"active_accounts": 3}, 1: {"active_accounts": 6}}

我尝试通过在数组上循环并访问特定密钥的单个散列来实现这一点,但这似乎不起作用。任何线索都将不胜感激。

安全变量,映射到数组(相同的
“id”
应得到正确处理):

正是你问的:

a.group_by { |e| e.delete("id") }
 .map { |k, v| [k, v.first] }
 .to_h

安全变量,映射到数组(需要相同的
“id”
,并正确处理):

正是你问的:

a.group_by { |e| e.delete("id") }
 .map { |k, v| [k, v.first] }
 .to_h
希望能有帮助

希望有帮助。

还有一个可能的解决方案)

(还有一个可能的解决方案)


您可以发布您尝试过的代码吗?'response=Hash.new a.each do | key | response[key[:id]={“active_accounts”:key[:active_accounts]}end response'您可以发布您尝试过的代码吗?'response=Hash.new a.each do | key | response[key[:id]={“active_accounts”:key[:active_accounts]}结束回答:“非常感谢mudasobwa。非常感谢mudasobwa。非常感谢帮助。确实是Rangnath.:)确实是Rangnath.)
a.each_with_object({}) {|obj , hash| hash.merge!(Hash[obj[:id], Hash["active_accounts",obj[:active_accounts]]])}

# {5=>{"active_accounts"=>3}, 1=>{"active_accounts"=>6}}
a.map { |hash| [hash.delete(:id), hash] }.to_h
#=> {5=>{:active_accounts=>3}, 1=>{:active_accounts=>6}}