gpt4 book ai didi

perl - 在 Perl 中,如何按(数字)值的顺序打印散列键?

转载 作者:行者123 更新时间:2023-12-01 00:41:53 26 4
gpt4 key购买 nike

我有一个哈希,其中键是字符串,值是个位数;这是一段所说的哈希:

      'f92a0d43-a230-4bfd-b580-9eac5e0ce6cf' => 7,
'26c4b622-969f-4861-bbab-dd506ea4b00a' => 1,
'afb1f925-4109-4b1d-967f-3958106e0bc3' => 3,
'a099a6dc-0c66-4683-94c3-29d6ef6947fd' => 1,
'e71c4860-224d-4b8d-ae9e-4700e9e65a97' => 2,

我想按值降序打印键。所以对于那里列出的切片,输出将是:

       'f92a0d43-a230-4bfd-b580-9eac5e0ce6cf' => 7
'afb1f925-4109-4b1d-967f-3958106e0bc3' => 3
'e71c4860-224d-4b8d-ae9e-4700e9e65a97' => 2
'26c4b622-969f-4861-bbab-dd506ea4b00a' => 1
'a099a6dc-0c66-4683-94c3-29d6ef6947fd' => 1

具有相同值的键的顺序无关紧要。这个问题的答案: In Perl, how can I print the key corresponding to the maximum value in a hash?建议使用排序功能;我有:

  my @values = sort { $b <=> $a } values %ID_hash;

我遇到的问题实际上是按顺序打印键。

我试过了:

    foreach(@values) {
my $cur = $_;
print "$ID_hash{$cur}\t$cur\n";
}

失败是因为我提供的是值而不是键。

我知道我总是可以将键/值对打印为制表符分隔的文件并使用 Unix 版本的排序,但我确信 Perl 有办法做到这一点。任何帮助将不胜感激。

最佳答案

按照散列中的值对键进行排序,然后使用排序后的键进行打印。

for my $key ( sort { $ID_hash{$b} <=> $ID_hash{$a} } keys %ID_hash ) {
print join( "\t", $key, $ID_hash{$key} ), "\n";
}

这个等价物可能更清楚一点:

my @sorted_keys = sort { $ID_hash{$b} <=> $ID_hash{$a} } keys %ID_hash ;

print "$_\t$ID_hash{$_}\n" for @sorted_keys;

关于perl - 在 Perl 中,如何按(数字)值的顺序打印散列键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com