代码之家  ›  专栏  ›  技术社区  ›  Mr Keystrokes

如何将新哈希附加到哈希数组?

  •  4
  • Mr Keystrokes  · 技术社区  · 7 年前

    如果我想在 mother_hash

    我的哈希:

    my %mother_hash = (
        'daughter_hash1' => [ 
            { 
              'e' => '-4.3', 
              'seq' => 'AGGCACC', 
              'end' => '97', 
              'start' => '81' 
            } 
        ],
        'daughter_hash2' => [ 
            { 
              'e' => '-4.4', 
              'seq' => 'CAGT', 
              'end' => '17', 
              'start' => '6' 
            }, 
            { 
              'e' => '-4.1', 
              'seq' => 'GTT', 
              'end' => '51', 
              'start' => '26' 
            }, 
            { 
              'e' => '-4.1', 
              'seq' => 'TTG', 
              'end' => '53', 
              'start' => '28' 
            } 
        ],
        #...
    );
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   Håkon Hægland    7 年前

    如果您有一个哈希数组的哈希,并希望向 在每个阵列的末尾,您可以执行以下操作:

    push @{ $_ }, \%new_hash for (values %mother_hash);
    

    该循环迭代 %mother_hash (在本例中为数组引用)和设置 $_ 对于每个迭代。然后在每次迭代中,我们将引用推送到新的哈希 %new_hash

        2
  •  2
  •   shawnhcorey    7 年前

    首先,我要指出子散列不是散列,而是匿名散列的数组。要添加另一个子哈希:

    $mother_hash{daughter_hash3} = [ { %daughter_hash3 } ];
    

    这将创建一个匿名数组,其中包含一个匿名哈希,其内容为 %daughter_hash3

    $mother_hash{$daughter_hash_key} = [ { %daughter_hash } ];
    

    哪里 $daughter_hash_key 是一个字符串,包含 %mother_hash %daughter_hash

    $darden\u hash\u密钥

    push @{ $mother_hash{$daughter_hash_key} }, { %daughter_hash };
    

    Data::Dumper 转储的内容 %mother\u哈希 每次通过循环,看看它是否正确增长。

    use Data::Dumper;
    print Dumper \%mother_hash;
    

    看见 perldoc Data::Dumper 有关详细信息。。

    数据::转储程序 perldoc perlmodlib

        3
  •  1
  •   Edwin Buck    7 年前

    mother_hash

    添加另一个顶级哈希数组。

    %mother_hash{$key} = [ { stuff }, { stuff } ];
    

    向现有数组中添加另一项

    push @{%mother_hash{'key'}} { stuff };
    

    将另一个条目添加到嵌入数组中的哈希中

    %{@{%mother_hash{'top_key'}}[3]}{'new_inner_key'} = value;
    

     use Data::Dumper;
     $Data::Dumper::Terse = 1;
     printf("mother_hash reference = %s\n", Dumper(\%mother_hash));
     printf("mother_hash of key 'top_key' = %s\n", Dumper(%mother_hash{top_key}));
    

    以此类推,以在大型数据结构中找到方法,并验证您正在缩小到要访问或更改的区域。