我有一个散列如下所示。我想在排序(升序)的基础上values
的keys
列表。
如果两个不同的键有相同的值,那么它应该先打印keys
,其中keys
较小。
让我展示一下我的例子中出现的问题:
#!/usr/bin/perl
use strict; use warnings;
use Data::Dumper;
my %hash = (
'11' => 1,
'315' => 4,
'27' => 3,
'60' => 4,
'8' => 3,
'4' => 2
);
my @keys = sort { $hash{$a} <=> $hash{$b} } keys(%hash);
print Dumper(\@keys);
字符串
电流输出:
$VAR1 = [
'11',
'4',
'27',
'8',
'315',
'60'
];
型
我想打印如下:
$VAR1 = [
'11',
'4',
'8',
'27',
'60',
'315'
];
型
因为60
的值是4
,315
的值也是4
。我想先打印60
,然后再打印315
,因为60
小于315
(我的意思是基于key
的值)。假设这可以用Tie::SortHash
来完成(不确定)?
2条答案
按热度按时间ryevplcw1#
将排序更改为先按数值排序,然后按键排序:
字符串
输出量:
型
参考
perlfaq4
:如何对散列进行排序(可选按值而不是键)?在命令行中,您可以使用以下命令查找常见问题:
型
nwo49xxi2#
字符串