use*_*386 3 perl hash perl-module
我有这样的对(数据排序为%哈希格式(我有大数据))
G1-G2
G2-G3
D1-D2
D3-D2
G3-D3
G2-D3
Perl脚本
use strict;
use warnings;
use Data::Dumper;
my %hash;
$hash{'G1'}='G2';
$hash{'G2'}='G3';
$hash{'D1'}='D2';
$hash{'D3'}='D2';
$hash{'G3'}='D3';
$hash{'G2'}='D3';
print Dumper \%hash;
Run Code Online (Sandbox Code Playgroud)
输出
$ VAR1 = {'G1'=>'G2','G2'=>'D3','D3'=>'D2','G3'=>'D3','D1'=>'D2' };
这里缺少G2-G3 bcz密钥哈希重复
我需要添加重复项(我可以使用数组但是有大数据系统会变慢)
任何快速方法添加对并获得可能对的条件输入
如果$ input ='G2'
获取输出G2 - >(G3,D3,G1)
如果$ input ='D2'
获取输出D2 - >(D1,D3)
小智 8
您是正确的,给定的哈希键只能有一个值.但是,该值可以是一个数组,在您的情况下,它听起来就像您需要的那样.所以类似于:
my %hash;
push @{$hash{G1}}, 'G2';
push @{$hash{G2}}, 'G3';
...
push @{$hash{G2}}, 'D3';
Run Code Online (Sandbox Code Playgroud)
哪能得到你:
$VAR1 = {
'G1' => [
'G2'
],
'G2' => [
'G3',
'D3'
]
};
Run Code Online (Sandbox Code Playgroud)
这种方法利用了Perl的自动生成功能,因此我们不需要在追加哈希键之前检查它是否存在.