如何根據鍵值對多級Perl哈希進行排序(並打印)?對多級Perl哈希進行排序(動態基於算術)
%hash = (
a => { k1 => 51, k2 => 52, k3 => 53 },
b => { k1 => 61, k2 => 62, k3 => 63 },
c => { k1 => 71, k2 => 72, k3 => 73 },
)
例如,根據k2
的值對數值進行上述散列排序? 所以應該打印:
52,62,72
我想知道我怎麼能擴大分揀單級哈希使用
sort { $hash{$b} <=> $hash{$a} } keys %hash`
編輯
如果我有另外一個哈希
到多電平my %property = (a => 7, b => 6, c => 5)
我可以對%hash
基於的$hash{key}{k2} * $property{key}
數值使用
#!/usr/bin/perl
use strict;
use warnings;
my %hash = (
a => { k1 => 51, k2 => 52, k3 => 53 },
b => { k1 => 61, k2 => 62, k3 => 63 },
c => { k1 => 71, k2 => 72, k3 => 73 },
);
my %property = (a => 7, b => 6, c => 5);
foreach (sort { ($hash{$a}{'k2'}*$property{$a}) <=>
($hash{$b}{'k2'}*$property{$b}) } keys %hash)
{
printf("[%d][%d][%d]\n",
$hash{$_}{'k2'},$property{$_},$hash{$_}{'k2'}*$property{$_});
}
結果應該是
72,52,62 as products are (360(72*5),364(52*7),372(62*6))
你想的'k2'值進行排序('52,62,72')按字母順序通過第一級關鍵字('a,b,c'),還是你想對所有'k2'值進行數字排序? – amon
[你有什麼嘗試?](http://whathaveyoutried.com) – 2013-06-19 16:26:07
增加了一個額外的問題 – Jean