如何将哈希值中的值推送到哈希数组?

时间:2017-08-01 10:02:59

标签: perl data-structures reference hashmap

我有一个%hashmap和一个数组@values

在我的代码中,%hashmap正在创建$hashmap{$key}="$name";

创建%hashmap之后,我需要将它的值添加到相同的%hashmap,但使用不同的键,新的hashmap如下所示:

@hashvalues=($name,$type,$Statement,\@parents,\@children)
$hashmap{$newkey}=\@hashvalues;

我想将$name$hashmap{$key}推送到\@children的{​​{1}}

到目前为止,这是我的代码:

$hashmap{$newkey}

# first i check if the $hashmap exists so i know i update it if(exists$hashmap{$name}){ my $auxiliary=\@{$hashmap{$name}}; push(@children,@$auxiliary); } my @hashvalues=($name,$type,$Statement,\@parents,\@children); $hashmap{$name}=\@hashvalues; 我希望%hash在此处创建,没有其他记录:

push

我有兴趣存储和推送的值是if ($parent ne @$hashvalues2[0]) { $hashmap{$parent}="$child"; }

这里的地方是相同的%hash将再次创建,但是字段名称,类型等:(不是空字段!,它们都有一个先前分配的值)

$child

我想看看@hashvalues = ($name, $type, $Statement, \@parents, \@children) $hashmap{$newkey} = \@hashvalues; 之前是否创建了%hash

所以我用这段代码检查一下:

@hasvalues=($name..

如果有记录,我想通过推送if (exists$hashmap{$name}) { Do Code... } 的{​​{1}}中的值$child来更新%哈希,那么当\@parents时type,name ..将使其具有前一版本的$ child值。

以下是代码的顺序:

  1. @hashvalues

  2. %hash
  3. if (exists$hashmap{$name}) { Do Code; }
  4. 以下是整个代码:

    my @hashvalues = ($name, $type, $Statement, \@parents, \@children); $hashmap{$name} = \@hashvalues; - 一系列陈述 if ($parent ne @$hashvalues2[0]) { $hashmap{$parent} = "$child"; } - 一个更大的字符串,我从

    收集我的所有数据

    我在@FileStatements填写我收集的所有数据

    $Statement

1 个答案:

答案 0 :(得分:0)

你的问题还远未明确,但我想我可以断章取义这个问题

  

我想将$hashmap{$key}中的$ name推送到\@children的{​​{1}}

我认为你已经有了类似的东西

$hashmap{$newkey}
  • 请注意,标识符my %hashmap; my ( $name, $type, $Statement, @parents, @children ); my @hashvalues = ( $name, $type, $Statement, \@parents, \@children ); $hashmap{$newkey} = \@hashvalues; nametype等已经消失,而这五个值只是数组的元素

  • 来自Statement的$ name是数组的第一个元素,所以它是 $hashmap{$key}

  • $hashmap{$key}[0]的{​​{1}}是数组的第五个元素,或者 @children

  • 要将第一个推入第二个,您需要

    $hashmap{$newkey}

您还应该使用比$hashmap{$newkey}[4]更有意义的内容作为您的标识符。 push @{ $hashmap{$newkey}[4] }, $hashmap{$key}[0] 表示该变量是一个哈希(没有Perl哈希映射),您应该使用该名称来描述其内容的性质