0

このコードを使用して、ネストされたハッシュ構造に値を入力しています。

metrics_hash = Hash[ @metrics_array.map {|key| [key, nil] }]
demos_hash = Hash[@demos_types_array.map {|key| [key, metrics_hash] } ]

demos_hash.each do |demo , metric_hash |
    metric_hash.each do |metric , value |
        demo_index = @demos_types_array.index(demo)
        metric_index = @metrics_array.index(metric)
        offset = @demos_types_array.length() 
        value_index = metric_index * offset + demo_index 
        val = @demo_vals[value_index]
        metric_hash[metric] = val

    end
   puts "#{demo.inspect} => #{metric_hash.inspect} "
end
row_hash = row_hash.merge!({"demos" => demos_hash } )
end

(上記のコードを読みやすくするために、いくつかの print ステートメントを削除しました。)

を印刷するrow_hashと、その中のvaldemos_hash は 10 進数で、次のように表示され"0"ます。

demos"=>{"Ind.2+"=>{"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"A18+"=>{"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"A25-54"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"A18-49"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"A18-34"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"A55+"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
"F25-54"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}, 
...........
"C2-11"=> {"AMA(000)"=>"0", "Shr% [Total TV Eng]"=>"0", "#Stations"=>"25"}}}

上記の値のほとんどは、"0"何らかの形で に変換された 10 進数でした"0"。ステーションの値は変更されていないことに注意してください。上記の値は、次の配列から挿入されました。

 demo_values = ["5.1", "5.1", "3.3", "3", "2.5", "1.9", "0", "0", "0", "3.3", "3",      
 "2.5", "2.5", "0", "0", "0.6", "0.6", "0.7", "0.6", "1.1", "0.7", "0", "0", "0", "1.4", 
 "1.2", "2.2", "0.9", "0", "0", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
 "25", "25", "25", "25", "25", "25"]

次の行の出力に注意してください。

  puts "#{demo.inspect} => #{metric_hash.inspect} "

のコードは次のようになります。

  "A18-34" => {"AMA(000)"=>"2.5", "Shr% [Total TV Eng]"=>"1.1", "#Stations"=>"25"} 

ご覧のとおり、配列内のほとんどの数値は 10 進数です。

そして、プログラムはmetrics_hash正しく設定されています。row_hash上記を含む全体を印刷すると問題が発生しdemos_hashます。何が起こっている可能性がありますか?

すべての変数のクラスを確認し、数字をキャストしようとしましたが、運が悪く、先に進むことができません。

誰かが親切に私が進む方法を理解するのを手伝ってくれますか?

4

1 に答える 1