我将此输入.txt文件加载到数组中,因此它出现如下:
class Note
def initialize(a, b)
@a = a
@b = b
end
end
input = File.open("DATA", "r")
input.each do |line|
l = line.split(',')
arr << Note.new(l[0], l[1])
end
我想计算并输出到另一个.txt文件,每个内部数组等于另一个内部数组的次数,例如[500, 2, x]
,其中x
是[500, 2]
数组在arr
中表示的时间。
input.txt示例
10000, 150
00500, 10
08000, 171
00045, 92
00045, 93
00045, 92
00045, 93
预期产出
10000, 150, 1
00500, 10, 1
08000, 171, 1
00045, 92, 2
00045, 93, 2
提前致谢。
答案 0 :(得分:1)
这个怎么样:
arr.uniq.map {|el| [*el, arr.count(el)] }
对于数组的每个唯一元素,计算它在那里的次数,并使用该元素及其计数创建一个新数组。
示例:
arr = [[1,2], [5,5], [5,5], [8,7], [1,2], [5,5]]
#=> [[1, 2, 2], [5, 5, 3], [8, 7, 1]]
答案 1 :(得分:1)
这就是你要找的东西:
arr = [[5000, 52],[99422, 1],[5000, 52],[325, 63]]
arr.group_by{|a| a }.map{|k,v| [*k,v.size]}
# => [[5000, 52, 2], [99422, 1, 1], [325, 63, 1]]
修改强>
ar = File.readlines("/home/kirti/Ruby/input.txt").map{|s| s.scan(/\w+/) }
ar.group_by{|a| a }.map{|k,v| [*k,v.size]}
# => [["10000", "150", 1],
# ["00500", "10", 1],
# ["08000", "171", 1],
# ["00045", "92", 2],
# ["00045", "93", 2]]