Perl:按值进行哈希排序并获取密钥
是否有一些perl“魔力”可以通过按值排序的哈希进行迭代,但在迭代中获得密钥 按X排序并获取X很容易(键、值)-以及按键排序并获取值Perl:按值进行哈希排序并获取密钥,perl,hash,Perl,Hash,是否有一些perl“魔力”可以通过按值排序的哈希进行迭代,但在迭代中获得密钥 按X排序并获取X很容易(键、值)-以及按键排序并获取值 谢谢 请记住,以后请举例说明您的数据、所需结果以及您编写的代码,并说明其中的错误 my %hash = ( one => 'a', two => 'b', three => 'c', four => 'd' ); for my $k ( sort { $hash{$a} cmp $hash{$b} } keys %hash ) {
谢谢 请记住,以后请举例说明您的数据、所需结果以及您编写的代码,并说明其中的错误
my %hash = ( one => 'a', two => 'b', three => 'c', four => 'd' );
for my $k ( sort { $hash{$a} cmp $hash{$b} } keys %hash ) {
print "$k: $hash{$k}\n";
}
__END__
one: a
two: b
three: c
four: d
就目前而言,你的问题非常模糊,我不得不做出一些假设,这些假设可能是错的,也可能不是错的
它不是“神奇的”;您只需编写适当的排序
块
这将按照相应值的升序对%hash
的键进行排序
my @sorted_keys = sort { $hash{$a} cmp $hash{$b} } keys %hash;
您还可以像这样使用List::UtilsBy
。它可能比简单的排序
技术快得多,具体取决于您的数据
use List::UtilsBy 'sort_by';
my @sorted_keys = sort_by { $hash{$_} } keys %hash;
没有魔法。您必须获取所有键值对,按值排序(您自己,使用适当的函数),然后从您感兴趣的每一对中获取密钥。另请参见and和@Thilo:您不必“获取所有键值对”:它们已经在散列数据中排列整齐。@Borodin:我的意思是“你必须遍历散列的所有条目”,没有快捷方式。