2009-10-19 2 views
4

이의 내가 이런 루비 해시 있다고 가정 해 봅시다 값 :분할 관련 분류 키에 루비 해시/

d = {1 => 'one', 3 => 'three', 2 =>'two'} 

을 내가입니다

x = [1, 2, 3] 
y = ['one', 'two', 'three'] 

을 얻을하고자, 나는 분류를 원하는 키는 x이고, 해당 값은 y입니다. 나는 잠재적으로 x에 사용자 지정 정렬 순서를 사용하려고합니다.

가장 간단하고 간단한 방법은 무엇인가요? 당신은 당신이 원하는대로로 변경할 수 있도록

+0

내가 요청할 수 있습니다 : 사용자 정의 종류와

x,y = d.sort.transpose 

또는? 아니면 실제 데이터 세트에서 더 의미가 있습니까? –

+0

절대적으로 내 실제 데이터 세트로 더 의미가 있습니다. – Peter

답변

8

쉬운 : 당신은 숫자 키 대신 배열과 해시를 왜

x,y = d.sort_by {|k,v| whatever}.transpose 
+0

내 투표가 있습니다. – jrhicks

+0

좋습니다! 이것은 분명히 '올바른'방식입니다. 감사. – Peter

+0

transpose = unzip ... 이상한 이름 지정 선택이지만 내 투표도 있습니다. –

8

내 원래의 대답

x = d.keys.sort 
y = x.map {|k| d[k]} 

하지만 당신은 또한 글렌 맥도날드의 대답

x,y = d.sort.transpose 
0
x, y = d.keys.sort{|a,b| a <=> b}.inject([]){|result, key| result << [key, d[key]]}.transpose 

... 볼 수는 종류가 명시했다.

관련 문제