Perl:如何从哈希保存密钥顺序?

时间:2016-07-20 07:31:46

标签: perl hash

我试图从json hash

显示密钥

执行后,我显示了所有键,但顺序不同。那时我卡住了。

是否有可能保存按键顺序?

非常感谢您的帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

根据定义,哈希没有顺序。 Perl哈希和JSON结构也是如此。在Perl中,哈希中键的顺序可能与它们添加到哈希的方式不同。两个JSON结构可以相互等同,但不一样。

如果您需要按特定顺序使用密钥,请使用sort按照检查时所需的顺序对密钥进行排序。

答案 1 :(得分:-1)

您可以创建一个列表(将被订购),并在每个列表元素中放入另一个包含2个字段(键和值)的列表。这实际上是一个有序的哈希。

#!/usr/bin/perl

%json = qw(key1 value1 key2 value2 key3 value3);
my $result = "keys => { \n";
for my $key (keys %json) {
  $result .= "$key\n";
}
$result .= " }\n\n";

print $result;

my $json=[];
for my $key (sort keys %json) {
    my @list = ();
    push(@list,$key);
    push(@list,$json{$key});
    push(@$json,\@list);
}

for (@$json) {
    print $_->[0], " ", $_->[1], "\n";
}