The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Сортировка хеша в perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Сортировка хеша в perl"  +/
Сообщение от allexnew (ok) on 20-Июл-10, 10:24 
Никак не могу сообразить почему следующая конструкция не работает:

%ha = (
    25 => 23,
    27 => 1,
    11 => 4,
    12 => 4,
    34 => 1,
    18 => 2,
    24 => 1,
    29 => 9
);

foreach(sort {$ha{$a} <=> $ha{$b}} keys %ha) {
    ### print $_,' = ',$ha{$_},"\n";
     %qqq=(%qqq, $_, $ha{$_});
     }


while(($key,$value) = each %qqq){
    print "$key = $value \n";
    };
exit;

В цикле foreach распечатка отсортированных значений проходит нормально, далее пытаюсь тут же занести ключи и значения в новый хеш, но что-то идет не так. Где ошибка?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Сортировка хеша в perl"  +/
Сообщение от gibbon (??) on 20-Июл-10, 14:27 
В перле функция keys возвращает ключи хэша вовсе не в том порядке, в котором они заносились.
Она возвращает их в таком порядке, который ей больше нравится.
Так что отсортировать хэш у вас не получится

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Сортировка хеша в perl"  +/
Сообщение от allexnew (ok) on 20-Июл-10, 15:13 
>В перле функция keys возвращает ключи хэша вовсе не в том порядке,
>в котором они заносились.
>Она возвращает их в таком порядке, который ей больше нравится.
>Так что отсортировать хэш у вас не получится

Странно как-то это все. Чем же функция руководствуется? Ведь каждый раз возвращаются значения в определенном порядке, а не в разнобой.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Сортировка хеша в perl"  +/
Сообщение от аноним on 28-Июл-10, 21:39 
>Странно как-то это все. Чем же функция руководствуется? Ведь каждый раз возвращаются
>значения в определенном порядке, а не в разнобой.

Читайте что такое хэш и как он устроен.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Сортировка хеша в perl"  +/
Сообщение от cryo (ok) on 20-Июл-10, 14:48 
Сделайте примерно так:

@sorted_keys = sort {$ha{$a} <=> $ha{$b}} keys %ha);

foreach(@sorted_keys){
    print "$_ = $ha{$_}\n";
};

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Сортировка хеша в perl"  +/
Сообщение от allexnew (ok) on 20-Июл-10, 15:11 
>Сделайте примерно так:
>
>@sorted_keys = sort {$ha{$a} <=> $ha{$b}} keys %ha);
>
>foreach(@sorted_keys){
>    print "$_ = $ha{$_}\n";
>};

Спасибо, вроде как то, что нужно,  почему то сам не допер. Только скобку еще поставить надо:


@sorted_keys = (sort {$ha{$a} <=>  $ha{$b}} keys %ha);

foreach(@sorted_keys){
    print "$_ = $ha{$_}\n";
};


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Сортировка хеша в perl"  +/
Сообщение от cirus on 05-Авг-10, 13:24 

print "$_ = $ha{$_}\n" for sort keys %ha;


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру