gpt4 book ai didi

perl - 具有数组值的哈希的哈希

转载 作者:行者123 更新时间:2023-12-04 18:31:03 25 4
gpt4 key购买 nike

我正在尝试使用带有数组值概念的哈希值生成哈希值。我不确定我的语法是否正确。

下面是我希望用数组值创建散列的代码部分。

 use strict;
%hash=();
open IN, "samplefile.txt" or die "cannot open file:$!";
while(<IN>){
chomp $_;
my @split=split("\t", $_);
$hash{$split[0]}{$split[1]}=push @{ $hash{$split[0]}{$split[1]} },$split[2];
push(@array, $split[1]);
}

样本数据集:

4 10 2
9 4 3
4 3 2
4 3 8
4 10 5
4 5 2

预期的哈希值。

%hash=(
'4'=> {
'10'=>'2, 5'
'5' => '2'
'3' => '2,8'
}
'9'=>{
'4'=>'3'
}
)

最佳答案

我想你真的想要

%hash = (
'4' => {
'10' => [ 2, 5 ],
'5' => [ 2 ],
'3' => [ 2, 8 ],
},
'9' => {
'4' => [ 3 ],
},
);

解决方案:

my %hash;
while (<>) {
my @F = split;
push @{ $hash{ $F[0] }{ $F[1] } }, $F[2];
}

多亏了 autovivification,它会根据需要自动创建散列和数组。

如果您确实想要字符串而不是数组,则可以随时使用 join ','

for my $k1 (keys(%hash)) {
for my $k2 (keys(${ $hash{$k1} })) {
$hash{$k1}{$k2} = join(',', @{ $hash{$k1}{$k2} });
}
}

关于perl - 具有数组值的哈希的哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com