1

红宝石菜鸟在这里!

我有一组看起来像这样的结构

Token = Struct.new(:token, :ordinal)

所以这些数组看起来像这样,以表格形式:

 Token | Ordinal
 ---------------
    C  | 2
    CC | 3
    C  | 5

而且我想按结构的“令牌”(即左侧列)进行分组并获得计数,但还要保留“序数”元素。所以上面看起来像这样

 Token | Merged Ordinal | Count
 ------------------------------
    C  | 2, 5           | 2
    CC | 3              | 1

请注意,最后一列是分组标记的计数,中间列合并“序数”。第一列(“令牌”)可以包含可变数量的字符,我想对这些进行分组。

我尝试了各种方法,使用 group_by (我可以得到计数,但不是中间列),注入,迭代(似乎不是很实用),但我就是做错了,部分原因是我没有很好地掌握 Ruby 和可用的操作/功能。

我也很好地环顾了 SO,但我并没有走得太远。

任何帮助,指针将不胜感激!

4

1 回答 1

2

用于Enumerable#group_by为您进行分组,并使用生成的哈希来获得您想要的map或类似的东西。

structs.group_by(&:token).map do |token, with_same_token|
  [token, with_same_token.map(&:ordinal), with_same_token.size]
end
于 2012-08-04T01:38:10.750 回答