mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monday, October 30, 2006

펄/Perl] Hash(해쉬) 정렬 Sort; 해시 숫자 key / value 소팅


펄의 Hash(해쉬) 자체는 정렬(소팅;Sorting)할 수 없습니다. 해쉬의 요소들에는 정해진 순서가 없기 때문입니다.

다만, 해쉬를 "정렬하여 출력"할 수만 있습니다.

그리고 숫자로 이루어진 해쉬는, 문자열로 이루어진 해쉬와는 다른 방법으로 정렬해야 합니다. 각각의 정렬 방법은 다음 예제와 같습니다:

Hash(해쉬) 소트 출력 예제


예를 들어, "한국"이 key 이고 "서울"이 value 입니다.
#!/usr/bin/perl
use strict; use warnings;

  my %cities = (
    "한국"   => "서울",
    "일본"   => "도쿄",
    "그리스" => "아테네",
    "미국"   => "워싱턴",
    "프랑스" => "파리",
  );

  print "\n<key를 가나다순으로 소팅>\n";
  foreach $_ (sort keys %cities) {
    print "$_ : $cities{$_}\n";
  }



  print "\n\n<value를 가나다순으로 소팅>\n";
  foreach $_ (sort { $cities{$a} cmp $cities{$b} } keys %cities) {
    print "$_ : $cities{$_}\n";
  }





  my %num = (
    4343   => 4,
    88     => 1215,
    0.1    => -12,
    1212.1 => 124.0,
    542.0  => 54,
    42.0   => 0,
    87     => 99,
  );

  print "\n\n<key를 숫자 크기순으로 소팅>\n";
  foreach $_ (sort {$a <=> $b} keys %num) {
    print "$_ : $num{$_}\n";
  }


  print "\n\n<value를 숫자 크기순으로 소팅>\n";
  foreach $_ (sort { $num{$a} <=> $num{$b} } keys %num) {
    print "$_ : $num{$_}\n";
  }




실행 결과:
D:\Z>0.pl

<key를 가나다순으로 소팅>
그리스 : 아테네
미국 : 워싱턴
일본 : 도쿄
프랑스 : 파리
한국 : 서울


<value를 가나다순으로 소팅>
일본 : 도쿄
한국 : 서울
그리스 : 아테네
미국 : 워싱턴
프랑스 : 파리


<key를 숫자 크기순으로 소팅>
0.1 : -12
42 : 0
87 : 99
88 : 1215
542 : 54
1212.1 : 124
4343 : 4


<value를 숫자 크기순으로 소팅>
0.1 : -12
42 : 0
4343 : 4
542 : 54
87 : 99
1212.1 : 124
88 : 1215

D:\Z>



▶▶ 펄/Perl] 숫자 배열 정렬(소팅), sort 함수 사용법: Sort Number Array

▶▶ [펄/Perl] 디버깅용 해쉬 덤프 (Hash Dump)




tag: perl
Perl | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top