|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitriy Goldobin 2:5020/400 10 Apr 2000 14:09:16 To : All Subject : Re: Сортировать ассоциированый массив для вывода --------------------------------------------------------------------------------
Hi!
> Требуется сабж, сортировка по значениям. Я ничего умнее не придумал, как:
>
> for (%a){
> if ($a{$_}) { @a[$i] = $a{$_}; $i++; }
> }
> @a = sort {$b <=> $a} @a;
> for $i (@a){
> for $j (%a){
> if ($a{$j} == $i) { print "$a{$j} - $j" ;
> $a{$j} = -1; }
> }
> }
> Т.е. сливаю значения в массив, сортирую и печатаю по полученному массиву с
> заменой напечатанных значений за рабочий интервал. Может есть что либо по
> стандартнее, по проще?
Че то уж больно накручено :)
Если значения уникальны, то достаточно %b = reverse %a; for(sort keys %b)...
Если не уникальные, то вот так:
for( sort {$h{$a} cmp $h{$b}} keys %h ) {
print $_, $h{$_}, "\n";
}
Bye.
--- ifmail v.2.15dev4
* Origin: Electronic Microsystems JSC (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/21956be8327d8.html, оценка из 5, голосов 10
|