从ruby中的哈希数组获取数据

从ruby中的哈希数组获取数据,ruby,Ruby,我从谷歌表单中得到一个哈希数组,它看起来像这样 itemList = [ {:id => '1', :type => 'A', :category => 'Cat1' }, {:id => '2', :type => 'A', :category => 'Cat1' }, {:id => '3', :type => 'B', :category => 'Cat1' },

我从谷歌表单中得到一个哈希数组,它看起来像这样

itemList = [ {:id => '1', :type => 'A', :category => 'Cat1' }, 
             {:id => '2', :type => 'A', :category => 'Cat1' },
             {:id => '3', :type => 'B', :category => 'Cat1' },
             {:id => '4', :type => 'B', :category => 'Cat1' },
             {:id => '1', :type => 'A', :category => 'Cat2' },
             {:id => '2', :type => 'A', :category => 'Cat2' },
             {:id => '3', :type => 'C', :category => 'Cat2' } ]
我想能够打印在终端上

Cat1
A
1, 2
B
3, 4

Cat2
A
1, 2
C
3
有没有简单的方法?
谢谢

以下内容将为您提供所需的格式

items = itemList.group_by {|x| x[:category] }

val = items.inject({}) do |m,(k,v)|
    tmp = v.group_by { |x| x[:type] }
    m[k] = tmp.update(tmp) { |i,j| j.map { |x| x[:id] } }
    m
end

# => {"Cat1"=>{"A"=>["1", "2"], "B"=>["3", "4"]}, "Cat2"=>{"A"=>["1", "2"], "C"=>["3"]}}
如下图所示进行显示

 val.each { |k,v| puts k; v.each { |i,j| puts i; puts j.join(', ') }; puts }

Cat1
A
1, 2
B
3, 4

Cat2
A
1, 2
C
3

到目前为止您尝试了什么?我正在使用itemList.each、prevCategory、prevType。我不喜欢这段代码,因为我没有使用ruby的强大功能。您遇到问题的代码是什么?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们有什么不同?请提供一份清单。非常感谢。这正是我想要的。