如何为每个子哈希 Perl 增加哈希值

丹尼尔·哈里斯 |

我想为每个 $COMMUNITY 从 0 开始增加 hash 的值,我定义了一个数组 @indicator 从 0 直到数组 @NAME 的相同索引并将其推送为值,但这不是我想要的,并且我不知道如何做到这一点。我很清楚该值不在顺序中,因为数组中的位置没有首先组织,但是如何准确地做到这一点,然后,如何打印 subhash $FAMILY 的每个第一个值。例如,

community 0 = name 0 4 7
community 1 = name 0 3 8
community 2 = name 0 3 6
#!/usr/bin/perl 

use warnings;
use strict;
use Tie::Autotie 'Tie::IxHash';


my @NAME= qw(AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AD CD CE CF BD BE);
my @FAMILY= qw(A A A B B B C C C A A A B B B C C C A A A B B B C C C A C C C B B);
my @COMMUNITY= qw(0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 0 2 2 2 1 1);

tie my %COMMUNITY_FAMILY_NAME,'Tie::IxHash' ;
my @indicator;

foreach (my $x=0;$x<=scalar @NAME;$x++)
{
push @indicator,$x;
}


push @{ $COMMUNITY_FAMILY_NAME{ $COMMUNITY[$_] }{ $FAMILY[$_]}{$NAME[$_]} }, $indicator[$_]  for 0 .. $#NAME;
print Dumper(\%COMMUNITY_FAMILY_NAME);

输出:

$VAR1 = {
          '0' => {
                   'A' => {
                            'AA' => [
                                      0
                                    ],
                            'AB' => [
                                      1
                                    ],
                            'AC' => [
                                      2
                                    ],
                            'AD' => [
                                      27
                                    ]
                          },
                   'B' => {
                            'BA' => [
                                      3
                                    ],
                            'BB' => [
                                      4
                                    ],
                            'BC' => [
                                      5
                                    ]
                          },
                   'C' => {
                            'CA' => [
                                      6
                                    ],
                            'CB' => [
                                      7
                                    ],
                            'CC' => [
                                      8
                                    ]
                          }
                 },
           '1' => {
                   'A' => {
                            'AA' => [
                                      9
                                    ],
                            'AB' => [
                                      10
                                    ],
                            'AC' => [
                                      11
                                    ]
                          },
                   'B' => {
                            'BA' => [
                                      12
                                    ],
                            'BB' => [
                                      13
                                    ],
                            'BC' => [
                                      14
                                    ],
                            'BD' => [
                                      31
                                    ],
                            'BE' => [
                                      32
                                    ]
                          },
                   'C' => {
                            'CA' => [
                                      15
                                    ],
                            'CB' => [
                                      16
                                    ],
                            'CC' => [
                                      17
                                    ]
                          }
                 },
           '2' => {
                   'A' => {
                            'AA' => [
                                      18
                                    ],
                            'AB' => [
                                      19
                                    ],
                            'AC' => [
                                      20
                                    ]
                          },
                   'B' => {
                            'BA' => [
                                      21
                                    ],
                            'BB' => [
                                      22
                                    ],
                            'BC' => [
                                      23
                                    ]
                          },
                   'C' => {
                            'CA' => [
                                      24
                                    ],
                            'CB' => [
                                      25
                                    ],
                            'CC' => [
                                      26
                                    ],
                            'CD' => [
                                      28
                                    ],
                            'CE' => [
                                      29
                                    ],
                            'CF' => [
                                      30
                                    ]
                          }
                 }
        };

预期输出:

 $VAR1 = {
              '0' => {
                       'A' => {
                                'AA' => [
                                          0
                                        ],
                                'AB' => [
                                          1
                                        ],
                                'AC' => [
                                          2
                                        ],
                                'AD' => [
                                          3
                                        ]
                              },
                       'B' => {
                                'BA' => [
                                          4
                                        ],
                                'BB' => [
                                          5
                                        ],
                                'BC' => [
                                          6
                                        ]
                              },
                       'C' => {
                                'CA' => [
                                          7
                                        ],
                                'CB' => [
                                          8
                                        ],
                                'CC' => [
                                          9
                                        ]
                              }
                     },
               '1' => {
                       'A' => {
                                'AA' => [
                                          0
                                        ],
                                'AB' => [
                                          1
                                        ],
                                'AC' => [
                                          2
                                        ]
                              },
                       'B' => {
                                'BA' => [
                                          3
                                        ],
                                'BB' => [
                                          4
                                        ],
                                'BC' => [
                                          5
                                        ],
                                'BD' => [
                                          6
                                        ],
                                'BE' => [
                                          7
                                        ]
                              },
                       'C' => {
                                'CA' => [
                                          8
                                        ],
                                'CB' => [
                                          9
                                        ],
                                'CC' => [
                                          10
                                        ]
                              }
                     },
               '2' => {
                       'A' => {
                                'AA' => [
                                          0
                                        ],
                                'AB' => [
                                          1
                                        ],
                                'AC' => [
                                          2
                                        ]
                              },
                       'B' => {
                                'BA' => [
                                          3
                                        ],
                                'BB' => [
                                          4
                                        ],
                                'BC' => [
                                          5
                                        ]
                              },
                       'C' => {
                                'CA' => [
                                          6
                                        ],
                                'CB' => [
                                          7
                                        ],
                                'CC' => [
                                          8
                                        ],
                                'CD' => [
                                          9
                                        ],
                                'CE' => [
                                          10
                                        ],
                                'CF' => [
                                          11
                                        ]
                              }
                     }
            };
疾病

您需要按社区迭代元素,为每个元素重置计数器。因此,我首先创建了没有计数器的结构,然后在设置值时以正确的顺序对其进行迭代。

#!/usr/bin/perl
use strict;
use warnings;

use Tie::Autotie 'Tie::IxHash';

my @NAMES       = qw(AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AD CD CE CF BD BE);
my @FAMILIES    = qw(A  A  A  B  B  B  C  C  C  A  A  A  B  B  B  C  C  C  A  A  A  B  B  B  C  C  C  A  C  C  C  B  B);
my @COMMUNITIES = qw(0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  2  2  2  2  2  2  2  2  2  0  2  2  2  1  1);

tie my %community_family_name, 'Tie::IxHash' ;

undef $community_family_name{ $COMMUNITIES[$_] }{ $FAMILIES[$_]}{$NAMES[$_]}
    for 0 .. $#NAMES;

for my $community (keys %community_family_name) {
    my $i = 0;
    for my $family (keys %{ $community_family_name{$community} }) {
        for my $name (keys %{ $community_family_name{$community}{$family} }) {
            $community_family_name{$community}{$family}{$name} = [$i++];
        }
    }
}
use Data::Dumper; print Dumper(\%community_family_name);

注意:您确定这些值需要在数组 ref 中吗?永远不会超过一个值。

按照惯例,小写名称用于 Perl 中的可变变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Perl:遍历数组以增加哈希值

来自分类Dev

Perl按哈希数组或哈希哈希中的哈希值排序

来自分类Dev

Perl-从多级哈希获取哈希值

来自分类Dev

Perl获取嵌套哈希值

来自分类Dev

Perl哈希提供undef值

来自分类Dev

Perl中的双哈希值

来自分类Dev

Perl哈希提供undef值

来自分类Dev

Perl获取嵌套哈希值

来自分类Dev

perl:如何遍历哈希

来自分类Dev

perl:如何遍历哈希

来自分类Dev

Perl,帮助访问哈希值中的值

来自分类Dev

访问Perl中的哈希值的哈希值最高?

来自分类Dev

Perl哈希哈希

来自分类Dev

基于perl中每个哈希中特定键的值对哈希数组进行排序

来自分类Dev

自动增加Perl哈希中的数字键值?

来自分类Dev

在Perl中更改哈希值的输出

来自分类Dev

使用Javascript函数检索Perl哈希值

来自分类Dev

Perl:哈希值后的数组排序

来自分类Dev

在Perl中访问哈希值(数组)

来自分类Dev

如果发现重复则删除Perl哈希值

来自分类Dev

在Perl中更改哈希值的输出

来自分类Dev

使用Javascript函数检索Perl哈希值

来自分类Dev

如果发现重复则删除Perl哈希值

来自分类Dev

Perl-遍历数组值的哈希

来自分类Dev

在Perl中将哈希值作为参数传递

来自分类Dev

面向对象的perl,设置哈希值

来自分类Dev

Perl,如何删除哈希数组中的哈希?

来自分类Dev

如何在Perl中使用哈希哈希?

来自分类Dev

Perl,如何删除哈希数组中的哈希?