打印perl哈希键和按值排序的值

时间:2014-10-02 04:50:19

标签: perl hash

我已按hashmap订购value并正在打印它们。打印完该值后,我想打印相应的key

我的代码目前是:

foreach my $value (sort (values %student_id_name_hash)){
   print "$value\n";
   // Print correspnding key here
}

我正在尝试打印唯一的学生ID (keys)和相应的学生姓名(values),这些可能不是唯一的。

此处建议的方法涉及reverse,但取决于唯一值:http://www.perlmonks.org/?node_id=177969

这是最好的方法吗?在我的情况下,无法保证这些值是唯一的。

2 个答案:

答案 0 :(得分:1)

如果你想要键和值,那么你需要根据键进行迭代并根据值进行排序,如下所示:

for my $key ( sort { $student_id_name_hash{$a} cmp $student_id_name_hash{$b} }
    keys %student_id_name_hash )
{
    print "$key - $student_id_name_hash{$key}\n";
}

答案 1 :(得分:0)

您可以根据与其关联的值对键进行排序

# standard good practice pragmas
use strict; use warnings; use utf8;

# sample/test data
my %id_hash = (
  X1 => 'Smith, Jane',
  Z9 => 'Doe, John',
);

# sort keys based on value and print
foreach my $key (sort {$id_hash{$a} cmp $id_hash{$b}} keys %id_hash ){
  my $value = $id_hash{$key};
  print "$value\n  $key\n";
}
相关问题