如何在两点之间顺序循环散列(perl)
How to loop through a hash sequentially between two points (perl)
我有一个具有以下形式的键的散列:A23
、A03
、A200
等
据我了解,哈希中的键并不完全按顺序排列。如果我通过首先添加 A23
、A03
和 A200
来构建散列,那么当我遍历散列时,我无法确定它们会按该顺序排列 - 对吗?
我如何才能从散列中的一个键循环到另一个键,以 "added" 顺序访问这些键。如果没有 "added" order with hashes 这样的东西,那么我可以按字母顺序对键进行排序。
是的,密钥插入顺序未维护。对于基于模块的解决方案,请参阅 http://search.cpan.org/~chorny/Tie-IxHash-1.23/lib/Tie/IxHash.pm
或者您可以在您的键中建立索引并在检索时排序:
%hash = (
'01:A23' => 1,
'02:A03' => 2,
'03:A200' => 3
);
foreach $one_key (sort keys %hash ) {
print("KEY : $one_key VALUE :$hash{$one_key}\n");
}
输出为:
KEY : 01:A23 VALUE :1
KEY : 02:A03 VALUE :2
KEY : 03:A200 VALUE :3
Perl 不跟踪散列的添加顺序,因此您要么必须单独跟踪它,要么退回到按字母顺序排列。 for my $key (sort keys %hash) {...}
是您要查找的要点。
我有一个具有以下形式的键的散列:A23
、A03
、A200
等
据我了解,哈希中的键并不完全按顺序排列。如果我通过首先添加 A23
、A03
和 A200
来构建散列,那么当我遍历散列时,我无法确定它们会按该顺序排列 - 对吗?
我如何才能从散列中的一个键循环到另一个键,以 "added" 顺序访问这些键。如果没有 "added" order with hashes 这样的东西,那么我可以按字母顺序对键进行排序。
是的,密钥插入顺序未维护。对于基于模块的解决方案,请参阅 http://search.cpan.org/~chorny/Tie-IxHash-1.23/lib/Tie/IxHash.pm
或者您可以在您的键中建立索引并在检索时排序:
%hash = (
'01:A23' => 1,
'02:A03' => 2,
'03:A200' => 3
);
foreach $one_key (sort keys %hash ) {
print("KEY : $one_key VALUE :$hash{$one_key}\n");
}
输出为:
KEY : 01:A23 VALUE :1
KEY : 02:A03 VALUE :2
KEY : 03:A200 VALUE :3
Perl 不跟踪散列的添加顺序,因此您要么必须单独跟踪它,要么退回到按字母顺序排列。 for my $key (sort keys %hash) {...}
是您要查找的要点。