繁体   English   中英

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

[英]Printing perl hash keys and values sorted by value

我已经按value对我的hashmap了排序并正在打印它们。 打印值之后,我想打印相应的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

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

如果需要键和值,则需要基于键进行迭代并根据值进行排序,如下所示:

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";
}

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

# 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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM