2014-09-26 4 views
0

다른 범주의 지정된 위치 (및 상당히 많은 수의 값)를 추적해야하는 코드가 있습니다. 40,000), 해시의 해시가 카테고리의 첫 번째 레이어는 키, 두 번째는 위치, 값은 값으로 가장 좋은 방법이라고 생각했습니다. 뭔가 같은 :perl의 해시 해시에 대한 해시 값의 두 가지 수준 정렬

%HoH = { 
     'cat1' => { 
        '7010' => 19, 
        '6490' => 13, 
        '11980' => 2 
       } 
     'cat2' => { 
        '7010' => 28, 
        '10470' => 13, 
        '205980' => 54 
       } 
     } 

가 그럼 난 같은 출력 파일을 얻을 분류하고, 분류하고 위치 모두의 순서로 인쇄해야합니다

cat1 6490  13 
cat1 7010  19 
... 
cat2 7010  28 

을하지만 구문을 작동 할 수 없습니다 중첩 된 정렬 (또는, 사람이 접근 방식보다 더 좋은 생각이있어?)

+0

키를 알파벳 순으로, 숫자 순으로 또는 자연스럽게 정렬 하시겠습니까? – ThisSuitIsBlackNot

+0

아, 미안하지만, 수치상으로 – Beemo

+3

당신은 그것을 어떻게 분류하려고 했습니까? 당신이 작성한 코드를 보여줄 수 있습니까? – chilemagic

답변

1

펄은 해시의 해시를 반복하면서 효율적으로 키를 정렬하는 것을 쉽게 :

for my $cat (sort keys %HoH) { 
    # numerical sort: 
    for my $digits (sort { $a <=> $b } keys %{$HoH{$cat}}) { 
     print join("\t", $cat, $digits, $HoH{$cat}{$digits}) . "\n"; 
    } 
}