我有一个哈希值,其中的值都是数字的。我可以使用 sort 命令对哈希值进行排序,或者按从前到后的顺序对哈希值进行排序,但是如果我想对结果进行加权而不是仅仅按照指定键的顺序呢?有没有办法做到这一点?
编辑:好的,这是代码......
my @check_order = ["disk_usage","num_dbs","qps_avg"];
my %weights = ( disk_usage => .7,
num_dbs => .4,
qps_avg => .2
);
my @dbs=sort {
($stats{$a}->{$check_order[0]}*$weights{$check_order[0]}) <=>
($stats{$b}->{$check_order[0]}*$weights{$check_order[0]}) or
($stats{$a}->{$check_order[1]}*$weights{$check_order[1]}) <=>
($stats{$b}->{$check_order[1]}*$weights{$check_order[1]}) or
($stats{$a}->{$check_order[2]}*$weights{$check_order[2]}) <=>
($stats{$b}->{$check_order[2]}*$weights{$check_order[2]})
} keys(%stats);