如何在ruby中合并基于哈希的相同键的数组?
例如:
a = [{:a=>1},{:a=>10},{:b=>8},{:c=>7},{:c=>2}]
Run Code Online (Sandbox Code Playgroud)
如何获得这样的结果?
a = [{:a=>[1, 10]},{:b=>8},{:c=>[7, 2]}]
Run Code Online (Sandbox Code Playgroud)
谢谢你
Ari*_*iao 10
尝试
a.flat_map(&:entries)
.group_by(&:first)
.map{|k,v| Hash[k, v.map(&:last)]}
Run Code Online (Sandbox Code Playgroud)
另一种选择:
a = [{:a=>1},{:a=>10},{:b=>8},{:c=>7},{:c=>2}]
p a.each_with_object({}) { |h, o| h.each { |k,v| (o[k] ||= []) << v } }
# => {:a=>[1, 10], :b=>[8], :c=>[7, 2]}
Run Code Online (Sandbox Code Playgroud)
当哈希具有多个键/值组合时,例如:
b = [{:a=>1, :b=>5, :x=>10},{:a=>10, :y=>2},{:b=>8},{:c=>7},{:c=>2}]
p b.each_with_object({}) { |h, o| h.each { |k,v| (o[k] ||= []) << v } }
# => {:a=>[1, 10], :b=>[5, 8], :x=>[10], :y=>[2], :c=>[7, 2]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5268 次 |
| 最近记录: |