根据值比较收集哈希键

3

我有一个像这样的哈希表:

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:p4具有:c3

1个回答

5

这样行吗?

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接