Perl哈希怎样实现输出的顺序还是按照文件里的顺序
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
展开全部
哈希可能不会按照文件里的顺序存储在内存中,因为它存储的规则是怎么舒服怎么存
当执行
%hash = ("a" => 10, "b" => 50, "c" => 30);
foreach (keys %hash)
{
print $_ . " => " . $hash{$_} . "\n";
}
看到的输出结果很可能不是当初赋值时的顺序。
可以使用 sort给键值排序
foreach (sort keys %hash)
{
print $_ . " => " . $hash{$_} . "\n";
}
此时看到的结果会根据字母顺序进行排序。
还可以使用@key = sort{$hash{$a} <=> $hash{$b}}keys %hash;
这样就是根据哈希键对应的值进行排序,此时是按数字大小进行升序排序。将$a和$b的位置调换就是降序,如@key = sort{$hash{$b} <=> $hash{$a}}keys %hash;
foreach (@key)
{
print $_ . " => " . $hash{$_} . "\n";
}
结果是根据键值进行排序。
当执行
%hash = ("a" => 10, "b" => 50, "c" => 30);
foreach (keys %hash)
{
print $_ . " => " . $hash{$_} . "\n";
}
看到的输出结果很可能不是当初赋值时的顺序。
可以使用 sort给键值排序
foreach (sort keys %hash)
{
print $_ . " => " . $hash{$_} . "\n";
}
此时看到的结果会根据字母顺序进行排序。
还可以使用@key = sort{$hash{$a} <=> $hash{$b}}keys %hash;
这样就是根据哈希键对应的值进行排序,此时是按数字大小进行升序排序。将$a和$b的位置调换就是降序,如@key = sort{$hash{$b} <=> $hash{$a}}keys %hash;
foreach (@key)
{
print $_ . " => " . $hash{$_} . "\n";
}
结果是根据键值进行排序。
追问
谢谢解答,使用Tie::IXHash,可以按之前的顺序输出
追答
这个模块我也是学习了,谢谢。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询