我有一个 Perl 中的多维哈希表,我想要为所选值更改第一个键。例如,我有以下哈希表:
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。完成后,结果如下:
$Hash1{1}{12}=1;
$Hash1{1}{10}=1;
$Hash1{2}{31}=1;
$Hash1{300}{52}=1;
$Hash1{300}{58}=1;
$Hash1{4}{82}=1;
$Hash1{4}{154}=1;
我知道可以通过扫描原始哈希值并执行以下操作来创建新的哈希值:
my %Hash2;
foreach my $key1 (sort keys %Hash1) {
foreach my $key2 (keys %{ $Hash1{$key1} }) {
if($key1==3){
$Hash2{300}{$key2}=1;
} else {
$Hash2{$key1}{$key2}=1;
}
}
}
但是有更快的方法吗?
$Hash1{300} = delete $Hash1{3};
可以翻译成“删除哈希表中键为3的元素,并将其值分配给键为300的元素”。 - mpapec