【发布时间】:2020-10-20 12:06:30
【问题描述】:
继我问过的一个类似问题 (Change first key of multi-dimensional Hash in perl) 之后,我在 perl 中有一个多维散列,并且想更改 MULTIPLE 第一个键以获得所选值。例如,我有哈希
my %Hash1;
$Hash1{1}{12}=1;
$Hash1{1}{10}=1;
$Hash1{2}{31}=1;
$Hash1{3}{52}=1;
$Hash1{3}{58}=1;
$Hash1{4}{82}=1;
$Hash1{4}{154}=1;
现在我想用值 300 替换第一个键中的值 3 和 4。之后我会得到:
$Hash1{1}{12}=1;
$Hash1{1}{10}=1;
$Hash1{2}{31}=1;
$Hash1{300}{52}=1;
$Hash1{300}{58}=1;
$Hash1{300}{82}=1;
$Hash1{300}{154}=1;
我知道我可以通过扫描原始散列并执行以下操作来创建新散列:
my %Hash2;
foreach my $key1 (sort keys %Hash1) {
foreach my $key2 (keys %{ $Hash1{$key1} }) {
if($key1==3 || $key1==4){
$Hash2{300}{$key2}=1;
} else {
$Hash2{$key1}{$key2}=1;
}
}
}
但是有更快的方法吗?
【问题讨论】: