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

时间:2017-02-17 10:24:35

标签: arrays ruby hash

我正在尝试将哈希数组转换为哈希,并将密钥作为数组中哈希元素之一。

例如:a = [{"active_accounts": 3, "id": 5}, {"active_accounts": 6, "id": 1}

我想将此数组转换为

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

我试过通过循环遍历数组并访问特定键的单个哈希来实现它,但这似乎不起作用。任何线索都会受到赞赏。

3 个答案:

答案 0 :(得分:2)

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}}

希望它有所帮助。

答案 1 :(得分:1)

安全变体,映射到数组(预期并正确处理相同的symbol-value):

SYMBOL-VALUE

你问的是什么:

"id"

答案 2 :(得分:1)

另一种可能的解决方案)

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