Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остортировать хэш-массив по его значениям 
V
    Опции темы
vax1700
Дата 26.3.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Есть хэш-массив с элементами тоже в виде хэш-массивов:
Код
my %s = ();

# 57 { r => 1, l => 11540 }
$s{ 57 }{ r }  = 1;
$s{ 57 }{ l }  = 11540;

# 52 { r => 1, l => 11511 }
$s{ 52 }{ r }  = 1;
$s{ 52 }{ l }  = 11511;

# 107 { r => 2, l => 11795 }
$s{ 107 }{ r } = 2;
$s{ 107 }{ l } = 11795;

# 147 { r => 1, l => 11948 }
$s{ 147 }{ r } = 1;
$s{ 147 }{ l } = 11948;

# 85 { r => 1, l => 11675 }
$s{ 85 }{ r }  = 1;
$s{ 85 }{ l }  = 11675;


Нужно отсортировать его по убыванию по ячейкам r и l т.е. сначала отсортировать по r, а если r одинаковые между сранивнивыми в процессе сортировки ячейками, то по убыванию l, т.е. результат должен получиться такой:

Код

107 { r => 2, l => 11795 }
147 { r => 1, l => 11948 }
85 { r => 1, l => 11675 }
57 { r => 1, l => 11540 }
52 { r => 1, l => 11511 }



Я никак не догоняю как отсортировать по значениям. Всё что я нашёл в интернете (разнообразные вызовы функции sort) они сортируют по ключу массив, здесь же мне надо по значениям.
Может кто-нибудь направит на пусть истинный или даст какую-нибудь ссылочку?

Это сообщение отредактировал(а) vax1700 - 26.3.2008, 10:38
PM MAIL   Вверх
amg
Дата 26.3.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(vax1700 @  26.3.2008,  10:35 Найти цитируемый пост)
как отсортировать по значениям
Это легко:
Код

foreach (sort {$s{$b}{r} cmp $s{$a}{r} or $s{$b}{l} cmp $s{$a}{l}} keys %s) {
  print "$_ { r => $s{$_}{r}, l => $s{$_}{l} }\n";
}



PM MAIL   Вверх
vax1700
Дата 26.3.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.