Monday, October 30, 2006
펄/Perl] Hash(해쉬) 정렬 Sort; 해시 숫자 key / value 소팅
펄의 Hash(해쉬) 자체는 정렬(소팅;Sorting)할 수 없습니다. 해쉬의 요소들에는 정해진 순서가 없기 때문입니다.
다만, 해쉬를 "정렬하여 출력"할 수만 있습니다.
그리고 숫자로 이루어진 해쉬는, 문자열로 이루어진 해쉬와는 다른 방법으로 정렬해야 합니다. 각각의 정렬 방법은 다음 예제와 같습니다:
예를 들어, "한국"이 key 이고 "서울"이 value 입니다.
실행 결과:
▶▶ 펄/Perl] 숫자 배열 정렬(소팅), sort 함수 사용법: Sort Number Array
▶▶ [펄/Perl] 디버깅용 해쉬 덤프 (Hash Dump)
다만, 해쉬를 "정렬하여 출력"할 수만 있습니다.
그리고 숫자로 이루어진 해쉬는, 문자열로 이루어진 해쉬와는 다른 방법으로 정렬해야 합니다. 각각의 정렬 방법은 다음 예제와 같습니다:
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";
}
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>
<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 | 펄
<< Home