arrays - 如何将数组或列表转换为 hashref?

标签 arrays perl dictionary hashref arrayref

我有一个这样的 list :

my $myV3VersionOfData = ["ZG","ZB","CXLDN",...];
我想把它转换成这样的字典:
my $entries = {
'ZG' => {
'value' => 'ZG'
},
'ZB' => {
'value' => 'ZB'
},
'CXLDN' => {
'value' => 'CXLDN'
},
...
};
到目前为止,我尝试过这个,但它不起作用并给我一个错误:

Can't use string ("ZG") as a HASH ref while "strict refs" in use at..


我知道这是因为我试图从列表中分配键值,但是如何将此列表转换为上面显示的字典?
my %genericHash;
for my $entry (@$myV3VersionOfData) {
  $genericHash{ $entry->{key} } = $entry->{value};
}
我怎样才能做到这一点?我是 Perl 的新手,我尝试了很多东西,但似乎没有用。任何人都可以帮忙吗?

最佳答案

你很接近。这是从数组引用创建哈希引用的一种方法:

use warnings;
use strict;
use Data::Dumper;
$Data::Dumper::Sortkeys=1;

my $myV3VersionOfData = ["ZG","ZB","CXLDN"];
my $entries;
for (@{ $myV3VersionOfData }) {
    $entries->{$_} = {value => $_};
}

print Dumper($entries);
输出:
$VAR1 = {
          'CXLDN' => {
                       'value' => 'CXLDN'
                     },
          'ZB' => {
                    'value' => 'ZB'
                  },
          'ZG' => {
                    'value' => 'ZG'
                  }
        };

关于arrays - 如何将数组或列表转换为 hashref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68475818/

相关文章:

arrays - Lua:table.remove 不适用于二维数组

java - 为什么 Collections.sort() 比 Arrays.sort() 慢得多?

java - 如何将数组元素移位n次?

python - 字典:获取键列表的值列表

ruby - Ruby Hash 是否保留读取值与分配值的单独列表?

arrays - Swift 3 - 无法使用数组发出 Alamofire 请求

linux - 如果文件不存在,如何创建它的完整路径?

javascript - 正则表达式匹配模式 x 但返回任意字符串 y

perl - Perl 散列名称(在声明时)可以在同一个散列中使用吗?

Python - 在列表中选择一个字典,哪个键更接近全局值