2011-01-12 4 views
3

다음 배열 배열이 있습니다.문자열 배열의 배열을 문자열 해시로 변환하고 Ruby에서 부동시겠습니까?

>> gold_prices 

=> [["2011-01-11", "134.91"], ["2011-01-10", "134.12"], 
    ["2011-01-07", "133.58"], ["2011-01-06", "133.83"]] 

각 하위 배열을 해시로 변환하는 가장 깨끗한 방법은 무엇입니까? string => float? 당신이 할 수있는 하나 개의 키와 4 해시를 들어

+1

당신이 1 키 또는 4 키 1 해시 4 해시를 원하십니까? – Skilldrick

+0

이 예제에서 네 개의 키, 값 쌍을 가진 하나의 해시입니다. 'date'는 문자열 키이고 'price'는 부동 소수점 값입니다. – Milktrader

+0

원하는 결과의 예제를 제공하는 것이 항상 도움이됩니다. 그러면 스킬 릭 (Skilldrick)과 같은 질문을 피할 수 있습니다. –

답변

7
>> gold_prices = Hash[gold_prices.map {|date, price| [date, price.to_f]}] 

=> {"2011-01-11" => 134.91, "2011-01-10" => 134.12, 
    "2011-01-07" => 133.58, "2011-01-06" => 133.83} 
+0

아주 좋은 - 그 구문에 대해 몰랐습니다! – Skilldrick

+0

작성한 해시를 제조하기 위해 질문을 편집하기 전에 깨끗한 답을 얻었습니다. 감사합니다. – Milktrader

+1

아마도 큰 문제는 아니지만이 특정 양식은 Ruby 1.8.7 이상에서만 작동합니다. 이전 버전의 경우'Hash [* foo.map {...}. flatten]' – Phrogz

1

:

gold_prices.collect { |item| { item.first => item.last.to_f } } 
+0

아주 잘 작동합니다. – Milktrader

2
#!/usr/bin/env ruby 

gold_prices = [["2011-01-11", "134.91"], ["2011-01-10", "134.12"], 
    ["2011-01-07", "133.58"], ["2011-01-06", "133.83"]] 

h = {} 
gold_prices.each { | date, quote | h[date] = quote.to_f } 

p h 
# {"2011-01-06"=>133.83, "2011-01-07"=>133.58, ... 
+0

견적은 부동이어야합니다. – Milktrader

+0

고마워, 그게 쉬운 치료법이었다. – Milktrader

관련 문제