perl - Perl:组合两个哈希数组的值并使第二个数组的值成为输出哈希的键
问题描述
对不起,如果我所说的哈希数组是别的东西。从现在开始,我将把这些东西称为“结构”。无论如何,假设我有两个结构:
my @arrayhash;
push(@arrayhash, {'1234567891234' => 'A1'});
push(@arrayhash, {'1234567890123' => 'A2'});
和
my @arrayhash2;
push(@arrayhash2, {'1234567891234' => '567'});
push(@arrayhash2, {'1234567890123' => '689'});
我怎样才能得到输出:
@output= {
'567' => 'A1',
'689' => 'A2',
}
两个结构中都不会缺少元素,也不会有“undef”值。
解决方案
您可以创建一个临时哈希,用于在两者之间进行映射。
#!/usr/bin/perl
use strict;
use warnings;
my @arrayhash;
push @arrayhash, {'1234567891234' => 'A1'};
push @arrayhash, {'1234567890123' => 'A2'};
my @arrayhash2;
push @arrayhash2, {'1234567891234' => '567'};
push @arrayhash2, {'1234567890123' => '689'};
my %hash; # temporary hash holding all key => value pairs in arrayhash
foreach my $h (@arrayhash) {
while( my($k,$v) = each %$h) {
$hash{$k} = $v;
}
}
my %output;
foreach my $h (@arrayhash2) {
while( my($k,$v) = each %$h) {
$output{$v} = $hash{$k};
}
}
my @output=(\%output);
推荐阅读
- javascript - 如何防止单击时放大/缩小图像?
- python - “pd.read_csv()”匹配参数没有重载参数类型:(Literal['../cleaned_data.csv.zip'], Literal['zip'])
- ios - nw_connection_receive 仅从 UDP 套接字连接接收 9216 个字节
- javascript - 当 JavaScript 中的浏览器中有 Promise.all() 时,如何从 Puppeteer 中的 page.evaluate() 返回数据
- mysql - 选择和子选择 UPDATE Mysql 案例学科 x 技术
- hibernate - Kotlin、Micronaut 和 Hibernate 自定义 bean 验证器从未被调用
- linux - 循环遍历不同的文本文件
- ssas - MDX 中是否会自动创建关卡?或者我是否在 BIDS 中有设置
- javascript - 从包含时区的字符串创建时刻日期时忽略时区
- python - 使用 bbox 参数从图像中去除水印