2012-02-27 5 views
-1

txt 파일에서 해시를 초기화했습니다. 내가 잘못 본 것이 아니라면, 열쇠는 현재 문자열입니다. 어떻게 정수로 만들 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.루비에서 해시 키를 정수로 변환합니다.

코드 :

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

주사 이외에 다른 방법이 있습니까? –

+0

나는 주사를 실제로 이해하지 못한다 –

+0

나는 그것을 배워야 할 것이다 –

2

할 수 있습니다 Hash[ hash.keys.map(&:to_i).zip(hash.values) ]

관련 문제