[英]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.