检查哈希值中的重复项并返回已清除的哈希值以及出现次数

时间:2013-12-04 15:15:58

标签: ruby-on-rails ruby enumeration

我还是一个ruby / rails初学者,我有点卡在这里。

这是我的所作所为: 我有一个哈希数组,每个哈希包含多个键,f.e。:firstname,lastname,nickname,birthday

在进一步处理之前,我希望获得所有重复的哈希值。我知道这可以通过合并来完成。有一个棘手的问题:我有一个特殊的标准"重复"。我想检查每个哈希值,如果三个键firstname,lastname和nickname是相同的,则只计数重复。如果是这种情况,我想从数组中删除所有重复项并附加一个新密钥" count"到最后一个记录发生次数的条目。

我觉得枚举会让我走向成功,但我不知道如何在一个优雅的轨道中解决这个问题" rails"方式。

非常感谢您的帮助!

亲切的问候, madhippie。

1 个答案:

答案 0 :(得分:1)

uniq在更新版本的ruby中占用了一块,但由于您还需要计数,我会开始研究group_by方法:

result = hash.group_by{|x| x.values_at(:firstname, :lastname, :nickname)}

然后只需要抓取哈希并添加值的数量:

result.map{|_,values| values.first.merge {size: values.lenth}}