Perl排序不规则嵌套哈希
我有一个不规则的散列(我不知道如何标记它) 我想根据最深级别的值对该哈希进行排序。 我如何进行排序和打印,最终得到这样的结果Perl排序不规则嵌套哈希,perl,sorting,hash,Perl,Sorting,Hash,我有一个不规则的散列(我不知道如何标记它) 我想根据最深级别的值对该哈希进行排序。 我如何进行排序和打印,最终得到这样的结果 AndroidOS x 473602 AndroidOS 4.2 167501 AndroidOS 4.1.2 90984 AndroidOS 4.3 44551 iOS 4.0 14953 iOS 7.0 13162 iOS 6.0 12
AndroidOS x 473602
AndroidOS 4.2 167501
AndroidOS 4.1.2 90984
AndroidOS 4.3 44551
iOS 4.0 14953
iOS 7.0 13162
iOS 6.0 12007
iOS 8 9327
BlackBerryOS 6.0 9201
BlackBerryOS 10 9140
iOS 5.0 8579
AndroidOS 2.3.4 7889
BlackBerryOS 4.6 6536
BlackBerryOS 7 5896
BlackBerryOS 4.1 5395
iOS 3.0 4112
散列是无序的,因此必须首先将其转换为有序结构(如数组): 那么,排序就很简单了:
@data = sort { $b->{n} <=> $a->{n} } @data;
你的价值观独特吗?如果答案是肯定的,我建议把你的散列倒过来。
my @data;
for my $os (keys %hash) {
for my $version (keys %{$hash{$os}}) {
push @data, { os => $os, version => $version, n => $hash{$os}->{$version} };
}
}
@data = sort { $b->{n} <=> $a->{n} } @data;
for (@data) {
print "$_->{os}\t$_->{version}\t$_->{n}\n";
}