2012-02-27 82 views
-1

我有一個來自txt文件的散列初始化。如果我沒有弄錯,關鍵是目前是一個字符串。我怎樣才能讓它成爲一個整數?任何幫助將不勝感激。將散列鍵轉換爲ruby中的整數

代碼:

products_file = File.open("files.txt") 
products = {} 
while !products_file.eof? 
    x, *products[x] = products_file.gets.chomp.split(",") 
    a = products[x] 
    a[0].strip! 
    a[1] = a[1].strip.to_f 
end 
puts products 

文件:

199, Shoes, 59.99 
211, Shirts, 19.99 
245, Hats, 25.99 
689, Coats, 99.99 
712, Beanies, 6.99 

我的結果是:

{"199"=>["Shoes", 59.99], "211"=>["Shirts", 19.99], "245"=>["Hats", 25.99], "689"=>["Coats", 99.99], "712"=>["Beanies", 6.99]} 

回答

1

您可以使用inject建立與整數鍵一個新的哈希:

hash = {"199"=>["Shoes", 59.99], "211"=>["Shirts", 19.99]} 

p hash.inject({}) { |memo, item| memo[Integer(item[0])] = item[1]; memo } 
    # => {199=>["Shoes", 59.99], 211=>["Shirts", 19.99]} 
+0

有沒有除了使用注入另一種方式? – 2012-02-27 02:52:45

+0

我真的不明白注入 – 2012-02-27 02:53:31

+0

我將不得不去學習 – 2012-02-27 02:59:33

2

我做Hash[ hash.keys.map(&:to_i).zip(hash.values) ]