我有一个大的.txt文件,其中包含一些数据,将崩溃的输入映射到崩溃站点。数据格式为 ,每一行都是另一次崩溃。 我尝试运行下面的ruby脚本来自动对它们进行排序,但它没有输出。任何和所有建议将不胜感激。
# !/usr/bin/ruby
fn = ARGV[0]
$result = Hash.new([])
File.open(fn, "r") do |f|
f.readlines do |l|
ar = l.split
puts(ar)
$result[ar[1]].push[ar[0]]
end
end
$result.each do |k, v|
puts(k)
puts(v)
end
答案 0 :(得分:0)
我认为问题在于$result = Hash.new([])
没有做你想要/想到的事情。
当您请求散列的任何不存在的密钥时,它将返回相同的数组,并且它也不会为后续的相同密钥请求分配任何数组。
相反,您可以使用Hash.new
的块版本:
result = Hash.new {|hash, key| hash[key] = [] }
具有默认值的Hash.new
版本对于避免在使用哈希来维持某些计数时需要nil
检查更有用,例如
counts = Hash.new(0)
counts['foo'] += 1