根据值比较收集哈希键

时间:2012-02-21 14:05:55

标签: ruby

我有这样的哈希:

h={
  :p1 => [:c1,:c2],
  :p2 => [:c3,:c4],
  :p3 => [:c1,:c5],
  :p4 => [:c3,:c2],
  :p5 => [:c6,:c7]
} 

我想找到一个很好的Ruby函数,它返回一个像这样的数组:

res=[[:p1,:p3],[:p2,:p4]]

每个子数组由相关的第一个值相等的散列键组成::p1:p3 :c1作为起始值,:p2和{{ 1}} :p4

1 个答案:

答案 0 :(得分:5)

这是怎么回事?

h.keys.group_by {|k| h[k][0]}
# => {:c1=>[:p1, :p3], :c3=>[:p2, :p4], :c6=>[:p5]}