Ruby noob在这里!
我有一个看起来像这样的结构数组
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和可用的操作/功能。
我也很好看,所以我没有走得太远。
任何帮助,指针都会非常感激!
答案 0 :(得分: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