我已按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
这是最好的方法吗?在我的情况下,无法保证这些值是唯一的。
答案 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";
}