2013-02-07 10 views
1

크기가 35K 인 배열을 해시로 변환하려고합니다. 다음과 같은 방법으로 크기 12K의 배열을 변환 할 수있었습니다.Ruby에서 큰 크기 배열을 해시로 변환

a = [] 
12000.times { |i| a << i } 
Hash[*a] 

그러나 크기가 12K를 초과하는 배열을 시도하면 SystemStackError : stack level too deep 오류가 발생합니다.

누구든지 제안 할 수 있습니까? 무슨 일 이니?

+0

아무것도 시도 할 수 없다, 내 컴퓨터 (ruby1.9.3-P125 OSX) 당신이 무엇을 할 수있는 효율적인 방법이 아닌 그래도 작동, 당신의 스택 실행 생각 공간이 부족합니다. – c2h2

답변

1

당신은 스크립트 잘못이

a = [*1..1_000_000].to_a 
b = {} 
a.each_slice(2){|k,v| b[k] = v} 
+0

대단히 고마워요. –

관련 문제