【问题标题】:Perl: Hash-sort by value and get the key [duplicate]Perl:按值哈希排序并获取键[重复]
【发布时间】:2018-07-21 02:34:02
【问题描述】:

是否有一些 perl 的“魔法”来遍历按值排序的散列但在迭代中获取键?

按 X 排序并获取 X 很容易(键、值) - 以及按键排序并获取值。

谢谢!

【问题讨论】:

标签: perl hash


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    请记住以后提供一个示例您的数据、所需的结果以及您编写的代码,并说明其中的问题。

    就目前而言,您的问题非常模糊,我不得不做出几个可能错误也可能不会错误的假设

    这不是“神奇的”;您只需编写适当的sort

    这会将%hash的键按其对应值的升序排序

    my @sorted_keys = sort { $hash{$a} cmp $hash{$b} } keys %hash;
    

    你也可以像这样使用List::UtilsBy。它可能比简单的sort 技术快得多,具体取决于您的数据

    use List::UtilsBy 'sort_by';
    
    my @sorted_keys = sort_by { $hash{$_} } keys %hash;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多