Сбор хеш-ключей на основе сравнения значений - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть такой хеш-код:

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 голосов
/ 21 февраля 2012

Как это?

h.keys.group_by {|k| h[k][0]}
# => {:c1=>[:p1, :p3], :c3=>[:p2, :p4], :c6=>[:p5]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...