簡體   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