我有这样一个数组:
[{:a=>"2017-01-01", :b=>"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}, {:a=>"2017-01-02", :b=>"5", :c=>"1"}]
Run Code Online (Sandbox Code Playgroud)
例如,如果我使用键":a"对数组进行分组,则结果为:
p = y.group_by { |g| g[:a]}
=> {"2017-01-01"=>[{:a=>"2017-01-01", :b=>"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}], "2017-01-02"=>[{:a=>"2017-01-02", :b=>"5", :c=>"1"}]}
Run Code Online (Sandbox Code Playgroud)
现在我想分组为每个":a"键":b"如:
=> {"2017-01-01"=>["2" => [{:a => "2017-01-01", :b => "2", :c => "1" }], ... }
Run Code Online (Sandbox Code Playgroud)
我能怎么做?提前致谢.
编辑:
多组由... 1°group_by a,2°group_by b结果为1°等.
y.group_by {|g| g[:a]}.map do |k,v|
[
k, v.group_by { |d| d[:b] }.map do |p,q|
[p, q.group_by { |f| f[:c] }]
end.to_h
]
end.to_h
Run Code Online (Sandbox Code Playgroud)