perl - 是否可以按照 key 的存储顺序遍历 perl 中的散列?

标签 perl sorting hash

考虑以下散列:

my $hoh = {
'tag1' => {
    'name' => 'Item 1',
    'order' => '1',
    'enabled' => '1',
},
'tag2' => {
    'name' => 'Item 2',
    'order' => '2',
    'enabled' => '0',
},
'tag3' => {
    'name' => 'Item 3',
    'order' => '3',
    'enabled' => '1',
},

}

我正在使用以下方法获取哈希值:

for my $x (keys %{ $hoh{'tag1'} }) {
            my $y = $hoh{'tag1'}{$x};
            print "key is $x --- value is $y\n";
            }

但是输出不是按照 key 存储的顺序!是否可以确保键值对按存储顺序打印?

最佳答案

key 的存储没有“顺序”。这是一个哈希。如果您真的想要一个特定的顺序(用于表格标题等),请保留一个单独的列表。

my @table_headings = qw(name order enabled);
for my $k (@table_headings) {
    my $v = $hoh->{tag1}->{$k};
    print "$k => $v\n";
}

关于perl - 是否可以按照 key 的存储顺序遍历 perl 中的散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16850803/

相关文章:

python - 标准化特定语言的发布/工具组

perl - WWW::Mechanize SSL 连接尝试因 https get 失败

c - 我正在用 C 创建程序来计算已创建文件中的单词数,并按字母顺序将单词保存在新文件中

java - HashMap - contains 和 get 方法不应该一起使用

perl - 在Perl或PowerShell中使用增量文件更新记录

regex - BASH - 替换文件中的正则表达式匹配

MySQL 编号排序

C++ 为什么我的指针选择排序中存在段错误?

security - 为哈希隐藏盐的必要性

c# - 加密密码的最佳方法是什么?