Ruby散列问题

时间:2017-11-07 15:29:29

标签: ruby

我有一个大的.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

1 个答案:

答案 0 :(得分:0)

我认为问题在于$result = Hash.new([])没有做你想要/想到的事情。

当您请求散列的任何不存在的密钥时,它将返回相同的数组,并且它也不会为后续的相同密钥请求分配任何数组。

相反,您可以使用Hash.new的块版本:

result = Hash.new {|hash, key| hash[key] = [] }

具有默认值的Hash.new版本对于避免在使用哈希来维持某些计数时需要nil检查更有用,例如

counts = Hash.new(0)
counts['foo'] += 1