gpt4 book ai didi

ruby - 使用散列获取 Typeerror(没有将符号隐式转换为整数)

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:51 26 4
gpt4 key购买 nike

我制作了一个示例脚本。这是我正在运行的示例脚本:

def array_generator
signalp_array = Array.new(11){ Array.new(11,0) }
signalp = Hash.new
file = File.readlines("./sample.txt")
file.each_with_index do |line, idx|
row = line.gsub(/\s+/m, ' ').chomp.split(" ") # split the line into a array based on white space.
signalp_array[idx][0..row.length - 1] = row # Merge into existing array
end
signalp_array.each do |g|
seq_id = g[0]
cut_off = g[4]
d_value = g[8]
signalp[seq_id] = [:cut_off => cut_off, :d_value => d_value]
end
return signalp
end

signalp = array_generator

puts signalp
signalp.each do |id, neww|
puts id
puts neww[ :cut_off]
puts neww[ :d_value]
end

我得到以下输出和错误:

isotig00001_f1_3
in `[]': no implicit conversion of Symbol into Integer (TypeError)

因为 puts signalp 行给了我以下内容:

{"isotig00001_f1_3"=>[{:cut_off=>"11", :d_value=>"0.132"}], "isotig00001_f1_5"=>[{:cut_off=>"11", :d_value=>"0.162"}], "isotig00001_f1_7"=>[{:cut_off=>"11", :d_value=>"0.397"}], "isotig00001_f1_8"=>[{:cut_off=>"11", :d_value=>"0.259"}], "isotig00001_f1_9"=>[{:cut_off=>"11", :d_value=>"0.110"}], "isotig00001_f1_10"=>[{:cut_off=>"11", :d_value=>"0.135"}], "isotig00001_f1_11"=>[{:cut_off=>"1", :d_value=>"0.000"}], "isotig00001_f1_12"=>[{:cut_off=>"12", :d_value=>"0.117"}], "isotig00001_f2_0"=>[{:cut_off=>"11", :d_value=>"0.108"}], "isotig00001_f2_1"=>[{:cut_off=>"28", :d_value=>"0.122"}], "isotig00001_f2_3"=>[{:cut_off=>"19", :d_value=>"0.097"}]}

哈希已正确创建。但是我无法单独访问 :cut_off:d_value (可能是因为它们是数字)。我尝试了to_ito_s等方法

  1. 有人可以告诉我我做错了什么吗?
  2. 对于搜索什么或在哪里可以了解有关该主题的更多信息有什么想法吗?

最佳答案

neww 不是散列,它是数组[{:cut_off=>"11", :d_value=>"0.132"}]。做

puts neww[0][:cut_off]
puts neww[0][:d_value]

关于ruby - 使用散列获取 Typeerror(没有将符号隐式转换为整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com